文章目录
- 3.排序算法复杂度及稳定性分析
- 4.选择题练习
-
- 1. 快速排序算法是基于( )的一个排序算法。
- 2.对记录(54,38,96,23,15,72,60,45,83)进行从小到大的直接插入排序时,当把第8个记录45插入到有序表时,为找到插入位置需比较( )次?(采用从后往前比较)
- 3.以下排序方式中占用O(n)辅助存储空间的是
- 4.下列排序算法中稳定且时间复杂度为O(n2)的是( )
- 5.关于排序,下面说法不正确的是
- 6.下列排序法中,最坏情况下时间复杂度最小的是( )
- 7.设一组初始记录关键字序列为(65,56,72,99,86,25,34,66),则以第一个关键字65为基准而得到的一趟快速排序结果是()
- 8.在待排序数据已有序时,花费时间反而最多的是( )排序。
- 9.下面的排序算法中,初始数据集的排列顺序对算法的性能无影响的有( )
3.排序算法复杂度及稳定性分析
稳定性
:
假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的
例子:
6 3 5 4 5 9 1
两个相同的值,如果排序之后红色的5依旧在蓝色的5前面,就是保证相对顺序不变,这就是稳定。
但稳定性只有在整型排序结构体中是有意义的
时间最坏 | 时间最好 | 空间 | 稳定性 | |
---|---|---|---|---|
直接插入排序 | O(N^2) | O(N) | O(1) | √ |
希尔排序 | 平均:O(N^1.3) | 平均:O(N^1.3) | O(1) | × |
选择排序 | O(N^2) | O(N^2) | O(1) | × |
堆排序 | O(N*logN) | O(N*logN) | O(1) | × |
冒泡排序 |