这是我参与11月更文挑战的第20天,活动详情查看:2021最后一次更文挑战
考研倒计时:35天
参考资料: 王道数据结构考研复习指导 天勤数据结构高分笔记
对于排序,主要分为内部排序和外部排序。
本篇主要总结内部排序的知识点。
对于任意n个关键字排序的比较次数至少为
插入排序
插入排序有直接插入排序、折半插入排序、希尔排序
需要注意的tip:
- 折半插入排序不适用于链表
- 直接插入排序比较次数和移动次数都取决于排序表的初始状态,最好情况(元素有序)时间复杂度为,最坏情况是逆序。所以平均时间复杂度为,稳定的算法。【判别特点:局部有序】
- 折半插入排序仅减少了比较元素的个数,该比较次数与排序表的初始状态无关,取决于元素个数,而元素的移动次数并未改变,依赖于排序表的初始状态。平均时间复杂度为,稳定的算法。
- 希尔排序,不稳定,仅适用于线性表为顺序存储的情况。熟悉不同增量的排序过程!(真题常出现)
【2018年408】
点击查看答案
D交换排序
交换排序有冒泡排序、快速排序
需要注意的tip:
- 冒泡结果序列最小或最大放置到最终位置。最好情况有序的时候,时间复杂度为,最坏的情况逆序,所以平均时间复杂度为,稳定的算法。【判别特点:有序子序列全局有序】
- 快速排序是所有内部排序平均性能最优的算法。不稳定,空间最好为,最差为,如果有序或逆序,时间复杂度最坏为,平均为。【判别特点:基准元素放在最终位置】
- 快排递归次数与初始数据的排列次序有关。 对于快排,选择题有个小tip,可以先写出已排序序列进行比较判断。
【2010年408】
点击查看答案
A选择排序
选择排序有简单选择排序和堆排序
需要注意的tip:
- 移动次数很少,最好为0次,此时已有序;移动次数不会超过3(n-1),比较次数与序列的初始状态无关,始终是n*(n-1)/2,因此时间复杂度为。不稳定
- 堆排序,建堆时间为O(n),调整堆的时间为树高,最好最坏平均均为,不稳定。空间复杂度为O(1)。
- 可将堆视为完全二叉树。
对于堆排序,解题通常画树来解决。
只需得到前k小元素的顺序排序可采用:冒泡、堆排序、简单选择排序。
【2018年408】
点击查看答案
A归并排序
- 空间复杂度为O(n),占用辅助空间最多。
- 时间复杂度为,稳定,比较次数与序列的初始状态无关。
- k路归并,趟数m为m=
基数排序
基数排序就不基于比较。有最高位优先MSD和最低位优先LSD。
按照个位、十位的顺序...分配和收集即可。
与序列的初始状态无关。稳定。
图片来源:一像素
部分内容待补充完善~
如有误,请多指正!