关于排序算法的各种性质总结(考研复习版

本文是关于各种排序以及其空间效率、时间效率、稳定性等的讨论
涉及到的排序有:
1.直接插入排序
2.折半插入排序
3.希尔排序
4.冒泡排序
5.快速排序
6.简单选择排序
7.堆排序
8.归并排序
9.基数排序

在这里插入图片描述

在考研书上,将直接插入排序、折半插入排序与希尔排序统一归为插入排序。

1.直接插入排序

  • 基本要点:每次将一个待排记录按关键字大小插入前面已排好序的子序列中

  • 空间效率:O(1)

  • 平均时间效率:O(n2);当元素顺序时,可达到最优时间效率O(n);当元素逆序时,可达到最差时间效率O(n2)

  • 稳定性√

  • 比较次数取决初始状态√

  • 移动次数取决初始状态√
    在这里插入图片描述
    2.折半插入排序

  • 空间效率:O(1)

  • 平均时间效率:O(n2)

  • 稳定性√

  • 比较次数取决初始状态× (取决与表中元素个数,约为O(nlog2n))

  • 移动次数取决初始状态√

  • 利用到了顺序存储的随机存储
    在这里插入图片描述
    3.希尔排序(减小增量排序)

  • 基本要点:相隔某个增量的记录组成一个子表,基本有序后再进行一趟直接插入排序

  • 空间效率:O(1)

  • 平均时间效率:O(n1.3) (了解即可)

  • 稳定性×

  • 比较次数取决初始状态√

  • 移动次数取决初始状态√

  • 利用到了顺序存储的随机存储
    在这里插入图片描述
    在考研书上,将冒泡排序、快速排序统一称为交换排序。

4.冒泡排序

  • 基本要点:每趟排序都可以将一个元素放到最终位置上

  • 空间效率:O(1)

  • 平均时间效率:O(n2);当元素顺序时,可达到最优时间效率O(n);当元素逆序时,可达到最差时间效率O(n2)

  • 稳定性√

  • 比较次数取决初始状态√

  • 移动次数取决初始状态√
    在这里插入图片描述
    5.快速排序

  • 基本要点:每趟排序后将枢轴元素放到最终位置上

  • 平均空间效率:O(log2n);最优空间效率O(log2n);最差空间效率O(n)

  • 平均时间效率:O(nlog2n);可达到最优时间效率O(nlog2n);当元素基本有序时,可达到最差时间效率O(n2)

  • 稳定性×

  • 比较次数取决初始状态√

  • 移动次数取决初始状态√

在这里插入图片描述
6.简单选择排序

  • 基本要点:第i趟即从L[i…n]中选择关键字最小的元素和L[i]交换,每趟确定一个元素的最终位置
  • 空间效率:O(1)
  • 平均时间效率:O(n2)
  • 稳定性×
  • 比较次数取决初始状态× (始终是n(n-1)/2次)
  • 移动次数取决初始状态√

在这里插入图片描述
7.堆排序

  • 空间效率:O(1)
  • 时间效率:O(nlog2n),其中建堆O(n),调整O(log2n)
  • 稳定性×
  • 比较次数取决初始状态√
  • 移动次数取决初始状态√
  • 利用到了顺序存储的随机存储

在这里插入图片描述
8.归并排序(外部排序)

  • 基本要点:将两个或两个以上的有序表组合成一个新的有序表
  • 空间效率:O(n)
  • 时间效率:O(nlog2n),其中进行[O(log2n)]趟归并(向上取整),每趟归并O(n)
  • 稳定性√
  • 比较次数取决初始状态×
  • 移动次数取决初始状态√

在这里插入图片描述

9.基数排序

  • 基本要点:基于关键字各位大小进行排序
  • 空间效率:O( r) 其中r是基数
  • 时间效率:O(d(n+r),其中d趟分配收集,一趟分配O(n),一趟收集O( r)
  • 稳定性√
  • 移动次数取决初始状态√

以上就是本文全部内容,如有错误,欢迎讨论指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值