排序
1、被排序的对象
若被排序的对象为文件,一般用文件中的某个标示记录来唯一的表示该文件,称该标示为关键字;
用来排序的关键字,可以是数字类型,也可以是字符类型。
2、排序的稳定性
当排序记录的关键字均不相同的时候,排序结果是唯一的,否则排序结果不唯一。
在排序的文件中,若存在多个关键字相同的记录,经过排序后这些相同的关键字的记录之间的相对次序保持不变,该排序方法是稳定的;若具有相同关键字的记录之间的相对次序发生变化,则称这种排序方法是不稳定的。排序算法的稳定性是针对输入的实例而言的,并非绝对的。
常用的排序算法:
不稳定的排序 | 时间复杂度 | 空间复杂度 |
选择排序 | O(n2) | 1 |
希尔排序 | O(nlogn) | 1 |
堆排序 | O(nlogn) | 1 |
快速排序 | 平均o(n log n),最坏情况:O(n2) | O(log n) |
稳定的排序 | 时间复杂度 | 空间复杂度 |
气泡排序 | 最差、平均都是O(n2) 最优为O(n) | 1 |
鸡尾酒排序 | 最差、平均都是O(n2) 最优为O(n) | 1 |
插入排序 | 最差、平均都是O(n2) 最优为O(n) | 1 |
归并排序 | O(nlogn) | O(n) |
桶排序 | O(n) | O(k) |
基数排序 | O(dn)(d是常数) | O(n) |
二叉树排序 | O(n logn) | O(n) |
图书馆排序 | O(n logn) | (1+e)n |