排序算法的时间效率:
平均情况 | 最好情况 | 最坏情况 | |
---|---|---|---|
基数排序 归并排序 快速排序 希尔排序 插入排序 选择排序 | O(n) O(n*logn) O(n*logn) O(n^1.5) O(n^2) O(n^2) | O(n) O(n*logn) O(n*logn) O(n) O(n) O(n^2) | O(n) O(n*logn) O(n^2) O(n^1.5)或O(n^2) O(n^2) O(n^2) |
函数的增长率函数:
n n*logn n^1.5 n^2 | 10 33 32 10^2 | 10^2 664 10^3 10^4 | 10^3 9966 31623 10^6 | 10^4 132877 10^6 10^8 | 10^5 1660964 31662777 10^10 | 10^6 19931569 10^9 10^12 |
排序效率分析 :当n为小一点的数时效率O(n^2)的排序算法还行,当n较大时,就不能使用了。当n为100时希尔排序在平均情况下几乎和快速排序一样快,但当n为10^6时,平均情况快排快的多。如果元素个数相对较少,或者接近有序,则插入排序时一种不错的选择。否则快排通常更可取。归并排序很适合用于元素太多无法全部放进内存而存放在外部文件中的情形。
排序的类型:
插入排序
直接插入排序
二路插入排序
简单选择排序(直接选择排序)
树形选择排序
堆排序
多关键字排序
链式基数排序