内部排序算法性能小结
内部排序按排序过程中依据的不同原则,则大致可分为:
- 插入排序:从未排序序列中依次取出元素与已排序序列中的元素进行比较,将其放入已排序序列中的正确位置上的排序方法。
- 交换排序:当每两个元素比较出现逆序时,就相互交换位置的排序方法。
- 选择排序:从未排序序列中挑选元素,并将其放入已排序序列的一端的方法。
- 归并排序:依次将每两个相邻的有序表合并成一个有序表的排序方法。
- 基数排序:借助多关键字排序的思想对单逻辑关键字进行排序的方法。
其中插入排序、交换排序、选择排序又分别有不同的排序方法:
各种排序算法所对应的时间复杂度、空间复杂度及排序稳定性如下表:
排序方法 | 平均时间 | 辅助空间 | 稳定性 |
---|---|---|---|
直接插入排序 | O( n 2 n^2 n2) | O(1) | 稳定 |
折半插入排序 | O( n 2 n^2 n2) | O(1) | 稳定 |
希尔排序 | O( n 1.5 n^{1.5} n1.5) | O(1) | 不稳定 |
起泡排序 | O( n 2 n^2 n2) | O(1) | 稳定 |
快速排序 | O( n l o g n nlogn nlogn) | O( l o g n logn logn) | 不稳定 |
简单选择排序 | O( n 2 n^2 n2) | O(1) | 不稳定 |
堆排序 | O( n l o g n nlogn nlogn) | O(1) | 不稳定 |
归并排序 | O( n l o g n nlogn nlogn) | O(n) | 稳定 |
基数排序 | O( n d nd nd) | O(rd) | 稳定 |
今天的排序算法小结就先写到这里,有许多不足之处,有待以后改进吧!