数据结构 排序 总结

来源:互联网 发布:java对象内存分配 编辑:程序博客网 时间:2024/06/06 09:27
排序算法比较 排序算法 最好时间 平均时间 最坏时间 辅助空间 是否稳定 直接插入 n n*n n*n 1 直接选择 n*n n*n n*n 1 冒泡 n n*n n*n 1 快速 n*log(n) n*log(n) n*n log(n) n*log(n) n*log(n) n*log(n) 1 归并 n*log(n) n*log(n) n*log(n) n 基数 n n n n+rd

(1)插入、选择、冒泡

a. 插入和冒泡利用了“前面”的结果,而选择没有。

b. 就相邻元素比较交换算法而言,插入排序已经做到了最好。

(2)快速、堆、归并

a. 对于比较排序,不论何种算法,其W(n) >= O(n * log(n)), A(n) >= O(n * log(n)),即快速、堆、归并已经做到了最好。(使用判定树证明)

b. 严 《数据结构》P292 斯特林公式

n个元素比较排序的最小比较次数 n 1 2 3 4 5 6 ceil(log n!) 0 1 3 5 7 10

c. 当输入完全随机时,快速最快,堆最慢,归并居中。

d. 与插入相结合,当n<20时,使用插入排序,而不是快速排序。

原创粉丝点击