十大基础排序算法

简介: 十大基础排序算法

排序算法分类
排序:将一组对象按照某种逻辑顺序重新排列的过程。

按照待排序数据的规模分为:

内部排序:数据量不大,全部存在内存中;
外部排序:数据量很大,无法一次性全部存在内存中,因此排序中需要访问外存。
按照排序是否稳定分为:

稳定排序:相等的元素在排序前后的相对位置不变。例如,a等于b,且原序列a在b前,排序后a仍在b前,则为稳定排序。
不稳定排序:相等元素在排序前后的相对位置可能发生变化。
按照是否需要额外内存分为:

原地排序:在排序过程中不申请多余的存储空间,只利用原来存储待排数据的存储空间进行比较和交换的数据排序。
非原地排序:需要额外内存空间存储数组副本以辅助排序。
按照排序方式分为:

比较类排序:通过比较来决定元素间的相对次序。
非比较类排序:不通过元素间的比较进行排序。

比较类排序
冒泡排序
冒泡排序是一种典型的交换排序。

算法原理:

比较相邻的元素。如果第一个比第二个大,就交换它们两个;
对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。这一步结束后,排在最后的元素会是所有数据中最大的数;
针对所有的元素重复以上的步骤,除了最后一个;
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

性能评价:

当nums[j] == nums[j+1]时,我们并不交换它们。所以冒泡排序是稳定的;
共循环了(n-1)+(n-2)+…+2+1=n(n-1)/2,所以时间复杂度是O(n^2)。
快速排序
快速排序是从冒泡排序演变而来的,实际上是在冒泡排序基础上的递归分治法。
快速排序在每一轮挑选一个基准元素,并让其他比它大的元素移动到数列一边,比它小的元素移动到数列的另一边,从而把数列拆解成了两个部分。

快排也用了分治策略,其本质框架类似二叉树的前序遍历。

时间复杂度:O(nlogn)
空间复杂度:O(1)
稳定性:不稳定

插入排序
基本思想:将待排序数据看成由已排序和未排序两部分组成。对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

算法流程:

从第一个元素开始,该元素可以认为已经被排序;
取出下一个元素,在已经排序的元素序列中从后向前扫描;
如果该元素(已排序)大于新元素,将该元素移到下一位置;
重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
将新元素插入到该位置后;
重复步骤2~5。

相关文章
|
算法 搜索推荐
基本的五大排序算法
基本的五大排序算法
|
网络协议 Java Nacos
Nacos—配置管理
Nacos—配置管理
1407 0
|
存储 Shell 开发工具
Git和TortoiseGit的安装与使用
Git和TortoiseGit的结合使用,可以大大提高版本控制的效率和便捷性。通过本文的步骤,您可以轻松安装和配置Git及TortoiseGit,并掌握基本的版本控制操作。
5618 82
|
算法 搜索推荐 Shell
|
网络协议 Linux C++
Linux C/C++ 网络编程中地址格式转换(inet_pton和inet_ntop函数)
Linux C/C++ 网络编程中地址格式转换(inet_pton和inet_ntop函数)
1647 0
|
算法 搜索推荐 索引
【基础算法】排序 查找 算法
【基础算法】排序 查找 算法
|
存储 移动开发 算法
常见基础实用算法详解
常见基础实用算法详解
672 0
|
算法 搜索推荐 C++
基本算法-选择排序
基本算法-选择排序
271 0
|
8天前
|
存储 弹性计算 缓存
阿里云服务器租赁费用:新版租赁收费标准及活动报价参考
本文更新了2026年阿里云全系列云服务器租赁活动报价,所有特惠资源均可前往阿里云活动中心选购,整体覆盖从个人入门到企业级高性能场景的全梯度需求。其中轻量应用服务器主打极致性价比,2核2G峰值200M带宽配置每日10点、15点限时抢购价仅38元/年,2核4G配置379元/年起;高性价比的经济型e实例、通用算力型u2i实例覆盖2核4G至4核32G全档位,适配开发测试与中小型企业业务;搭载英特尔至强6处理器的第九代c9i企业级实例算力较上代提升20%,支撑高并发生产环境,不同实例规格价差清晰,用户可根据自身业务负载与预算灵活选型。
1807 118
阿里云服务器租赁费用:新版租赁收费标准及活动报价参考

热门文章

最新文章