排序算法的依据——关键字
关键字的稳定性应根据具体问题而定。
排序的稳定性
当待排序记录的关键字均不相同时,排序结果是唯一的,否则排序结果不唯一。若存在多个关键字相同的记录,经过排序后,这些具有相同关键字的记录之间的相对次序保持不变,该排序方法是稳定的;否则称这种排序方法是不稳定的。
稳定的排序
稳定的排序(sort) | 时间复杂度 | 空间复杂度 |
---|---|---|
气泡排序(bubble) | 最差、平均都是O(n^2);最好是O(n) | 1 |
鸡尾酒排序(Cocktail,双向的冒泡排序) | 最差、平均都是O(n^2);最好是O(n) | 1 |
插入排序(insertion) | 最差、平均都是O(n^2);最好是O(n) | 1 |
归并排序(merge) | 最差、平均和最好都是O(nlogn) | O(n) |
桶排序(bucket) | O(n) | O(k) |
基数排序(Radix) | O(dn) (d是常数) | O(n) |
二叉树排序(Binary tree) | O(nlogn) | O(n) |
图书馆排序(Library) | O(nlogn) | (1+ε)n |
不稳定的排序
不稳定的排序 | 时间复杂度 | 空间复杂度 |
---|---|---|
选择排序(selection) | 最差、平均都是O(n^2) | 1 |
希尔排序(shell) | O(nlogn) | 1 |
堆排序(heap) | 最差、平均和最好都是O(nlogn) | 1 |
快速排序(quick) | 平均是O(n logn),最坏情况下是O(n^2) | O(log n) |