1、选择排序,是每一次从未排序序列中找出一个最大或者最小的数,放到已排好序的数列最后。因此关键字比较次数跟数列的初始排列顺序是没有关系的。
2、初始数据集排列顺序与比较次数无关的有:
口诀:一堆(堆排序)海归(归并排序)选(选择排序)基友
3、插入排序、堆排序、冒泡排序、快速排序的比较
插入排序是依次比较找到自己的位置,有序的数组比较次数少
堆排序在数据有序时能够降低维护堆的性质时的交换次数
标准冒泡排序的比较次数是固定的,但是改进的冒泡排序可以对于有序的数组减少比较次数
快速排序在有序时复杂度最高达到O(n2),完全无序时O(nlogn)
排序方法 | 平均时间 | 最好时间 | 最坏时间 |
桶排序(不稳定) | O(n) | O(n) | O(n) |
基数排序(稳定) | O(n) | O(n) | O(n) |
归并排序(稳定) | O(nlogn) | O(nlogn) | O(nlogn) |
快速排序(不稳定) | O(nlogn) | O(nlogn) | O(n^2) |
堆排序(不稳定) | O(nlogn) | O(nlogn) | O(nlogn) |
希尔排序(不稳定) | O(n^1.25) | ||
冒泡排序(稳定) | O(n^2) | O(n) | O(n^2) |
选择排序(不稳定) | O(n^2) | O(n^2) | O(n^2) |
直接插入排序(稳定) | O(n^2) | O(n) | O(n^2) |
4、元素的
移动次数与关键字的初始排列次序无关的是:基数排序
元素的
比较次数与初始序列无关是:选择排序
算法的
时间复杂度与初始序列无关的是:直接选择排序
5、
排序方法 | 平均时间 | 最好时间 | 最坏时间 |
桶排序(不稳定) | O(n) | O(n) | O(n) |
基数排序(稳定) | O(n) | O(n) | O(n) |
归并排序(稳定) | O(nlogn) | O(nlogn) | O(nlogn) |
快速排序(不稳定) | O(nlogn) | O(nlogn) | O(n^2) |
堆排序(不稳定) | O(nlogn) | O(nlogn) | O(nlogn) |
希尔排序(不稳定) | O(n^1.25) | ||
冒泡排序(稳定) | O(n^2) | O(n) | O(n^2) |
选择排序(不稳定) | O(n^2) | O(n^2) | O(n^2) |
直接插入排序(稳定) | O(n^2) | O(n) | O(n^2) |