常见排序算法的总结

算法的稳定性:

假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次 序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。

常见的排序算法:

1.插入排序:
直接插入排序
希尔排序

2.选择排序:
选择排序
堆排序

3.交换排序:
冒泡排序
快速排序

4.归并排序

复杂度及其稳定性:

1.插入类排序

代码实现:
https://blog.csdn.net/weixin_43519514/article/details/104770087
直接插入排序
基本思想是:把待排序的记录按其关键码值的大小逐个插入到一 个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列 。
时间复杂度O(N^2)
空间复杂度O(1)
稳定性:稳定
效率:待排序列越接近于有序,时间效率越高

希尔排序:
基本思想:
(预排序) 先选定一个整数n(间距即代码中的gap),将待排序列分成n组,所有距离为n的在同一个组,并对每一组内的记录进行排序。然后,重新取n的值,
(插入排序) 重复上面的步骤,直到n=1时所有记录在同一组内排成有序序列。

时间复杂度: O(N^1.3-N ^2)
空间复杂度:O(1)
稳定性:不稳定
在预排序的时候,相同的元素可能分到不同的组中,因此,我们无法控制相同元素的相对位置保持不变

2.选择排序:

选择排序

基本思想:
每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始(末尾)位置,直到全部待排序的 数据元素排完 。

时间复杂度O(N^2)
空间复杂度O(1)
稳定性:不稳定

堆排序

基本思想:

时间复杂度O(N*logN)
空间复杂度O(1)
稳定性:不稳定

3.交换排序:

冒泡排序
时间复杂度O(N^2)
空间复杂度O(1)
稳定性:稳定
快速排序
时间复杂度O(N*logN)
空间复杂度O(logN)
稳定性:不稳定

4.归并排序

时间复杂度O(N*logN)
空间复杂度O(N)
稳定性:稳定

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值