开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天,点击查看活动详情
排序分类
1.内部排序
-
插入排序
1)直接插入排序
2)折半插入排序
-
交换排序
1)冒泡排序
2)快速排序
-
选择排序
1)简单选择排序
2)堆排序
-
归并排序
-
基数排序
2.外部排序
- 多路归并排序
直接插入排序(稳定)
对有n个元素的顺序表采用直接插入排序算法进行排序,在最坏情况下所需的比较次数为n(n-1)/2,最好情况比较次数为n-1。
最好情况时间复杂度为O(n),最坏为O(n^2)。
1.数据序列{8,10,13,4,6,7,22,2,3}只能是()两趟排序的结果
A.简单选择排序 B.冒泡排序 C.直接插入排序 D.堆排序
C
冒泡排序和选择排序经过两轮排序后,应该有两个最大/最小元素放在最终位置;插入排序经过两次排序后,前三个元素应该是局部有序的,所以只有可能是直接插入排序
2.下列算法中()算法可能出现下列情况,在最后一趟开始之前,所有元素都不在最后位置上
A.简单选择排序 B.冒泡排序 C.直接插入排序 D.堆排序
C
直接插入排序,因为最后一趟开始之前,顺序可能为 2 3 4 5 6……
折半插入排序
时间复杂度为O(n^2)
1.对同一待排序序列分别进行折半插入排序和直接插入排序,两者之间可能的不同之处是
A.排序的总趟数 B.元素的移动次数 C.使用辅助空间的数量 D.元素之间的比较次数
排序总趟数取决于元素个数(两者都是n-1),元素的移动次数取决于初始序列 (两者相同), 使用辅助空间的数量都是O(1),折半插入序列比较次数为O(nlog2N)直接插入排序的比较次数为O(n)~O(n^2)。
希尔排序(不稳定)
希尔排序的组内排序采用的是 直接插入排序
有些排序算法在每趟排序过程中,都会有一个元素被放置到其最终位置上,希尔算法不会出现这种情况
基于插入、交换、选择的三类排序算法中,通常简单方法是稳定的(直接插入,折半插入,冒泡),例外是简单选择,复杂方法通常不稳定(希尔,快排,堆排)