第七章:internal sorting
要求&笔记
概念:各种排序算法的基本实现思想,数据初始顺序对各排序算法时间的影响,各算法的 best/worst/average case 时间复杂度,各排序算法的稳定性
应用题:shellsort/bubble sort/quicksort/heapsort/radix sort 的排序过程
算法:insert/selection/bubble/heap/quick sort 算法
区分:选择排序与插入排序,插入排序是在“以排序的序列”中进行swap,选择排序是在未排序序列中比较
而冒泡选择是两个两个的
稳定性: if the original ordering for duplicate keys is preserved.(k1=k2排序后k1与k2顺序是否改变)
排序算法 | 平均时间复杂度 | 最坏时间复杂度 | 最好时间复杂度 | 空间复杂度 | 稳定性 |
冒泡排序 | O(n²) | O(n²) | O(n) | O(1) | 稳定 |
直接选择排序 | O(n²) | O(n²) | O(n) | O(1) | 不稳定 |
直接插入排序 | O(n²) | O(n²) | O(n) | O(1) | 稳定 |
快速排序 | O(nlogn) | O(n²) | O(nlogn) | O(nlogn) | 不稳定 |
堆排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(1) | 不稳定 |
希尔排序 | O(nlogn) | O(ns) | O(n) | O(1) | 不稳定 |
归并排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(n) | 稳定 |
计数排序 | O(n+k) | O(n+k) | O(n+k) | O(n+k) | 稳定 |
基数排序 | O(N*M) | O(N*M) | O(N*M) | O(M) | 稳定 |
排序算法时间复杂度、空间复杂度、稳定性比较_排序算法的时间复杂度和空间复杂度-CSDN博客
习题
答案:D
解析:(等待问老师)
答案:A
答案:C
答案:C,有序几乎都是插入最好
答案:C,由此题可知选择、冒泡、堆排序都会先完成呈现排序结果的部分,利用好排除法
答案:A,由上一题可排除BC,由2,1,4的顺序可排除插入
答案:B,
C:由(1)(2)变化,猜测轴值为21,(2)(3)变化不合逻辑,可排除
A:(1)(2)变化不符合,应是(2)15 84 47 25 21
D:(1)(2)变化不符合
上一题:{15,9,7,8,20,-1,4}
A:区分插入与选择
(奇数个是难点)数据结构————希尔排序_希尔排序 递归-CSDN博客
(注意:如果数组是奇数,则会导致分组平均,会产生第三个组,则让这组数据与前一组相比较)
答案:
(1)
(2)(还未对答案,原来错了的)
注意是最后一个数与轴值交换,而不是放在最后
注意轴值而不是与其交换那个数
交换顺序:(12,18)(18,6)(16,10)(30,4)