关于排序的总结

本文介绍了常见的排序算法,包括插入排序、交换排序、选择排序等,并详细解析了每种算法的概念、理解和应用场景,还对比了它们的时间复杂度和稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概念:

排序是按关键字的非递减或非递增顺序对一组记录重新进行排序的操作。主要目的是为了便于查找。

稳定性:

假设起始状态A=B,且A在B的前面,经过排序之后如果A仍然在B之前,则这种排序是稳定的,否则称为不稳定排序。不能说不稳定排序的方法不好,各有各的使用场景。

分类:
插入排序:
  1. 直接插入排序
    理解:从第二个数开始,与他前面的数不断作比较,直到找到他合适的位置。比较次数和移动次数与初始排列有关
    时间复杂度:O(n2)
    稳定性:稳定

  2. 折半插入排序
    理解:减少了比较次数,但没有减少移动次数。平均性能优于直接插入排序。它所需要的关键码比较次数与待排序对象序列的初始排列无关,仅依赖于对象个数,在数据量较少的情况下比较有优势。
    时间复杂度:O(n2)
    稳定性:稳定

  3. 希尔排序
    理解:希尔排序也叫缩小增量排序,他是先确定一个间隔,比如5,然后第一个数与第六个数作比较,一次比较下去,然后缩小增量,直至为一。它的速度比快排更快
    时间复杂度:O(n1.3)
    稳定性:不稳定

交换排序:
  1. 冒泡排序
    理解:是我们最熟悉的排序,就是前后两个数不断的比较,大数沉底,小数上浮,它在排序时与数据的初始序列有关
    时间复杂度:O(n2)
    稳定性:稳定

  2. 快速排序
    理解:有一个基准,分别用low,high与这个基准数据比较,比他大的在一边,比他小的在另一边,然后重新给子表选择基准继续排序,知道子表的个数为一时,排序完成。
    时间复杂度:O(nlog2n)
    稳定性:不稳定

选择排序:
  1. 简单选择排序
    理解:从第一个数开始与后面的数逐个比较,把最小的数找出来放在最前面,然后找第二小的数,这样依次找下去,完成排序。与初始序列无关
    时间复杂度:O(n2)
    稳定性:不稳定

  2. 堆排序
    理解:结合树形结构完成的排序。
    时间复杂度:O(nlog2n)
    稳定性:不稳定

归并排序
  1. 归并排序
    理解:将两个或两个以上的有序表组合成一个新有序表,两个有序表的元素两两比较,小的元素进入新的序列,指针后移,直至指针移至最后,比较结束输出新的序列即可。
    时间复杂度:O(nlog2n)
    稳定性:稳定
总结:
排序时间复杂度稳定性与初始序列的关系
插入排序O(n2)稳定有关
折半插入排序O(n2)稳定
希尔排序O(n1.3)不稳定
冒泡排序O(n2)稳定有关
快速排序O(nlog2n)不稳定
选择排序O(n2)不稳定
堆排序O(nlog2n)不稳定
归并排序O(nlog2n)稳定
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值