查找,排序算法性能总结

查找,排序的算法很多,性能这块是真的老会懵,干脆总结一下,不太全,可能慢慢还会补充,有错误或者有补充欢迎指出啊~

 

查找算法性能
名称 时间复杂度 平均查找长度 适用存储方式 比较次数(最坏)
顺序查找 o(n) (n+1)/2 顺序/链式 n
二分查找 o(logn) log(n+1)-1(最小) 顺序 log(n+1)
分块/索引查找 o(logn)~o(n) (n/s+s)/2+1(s表示每块的元素个数) 顺序/链式  
哈希查找 o(1)      
二叉查找树

最好(平衡二叉树)o(logn)

最坏(只有左/右子树)o(n)

最好(平衡二叉树)log(n+1)-1

最坏(只有左/右子树)(n+1)/2

动态查找表  
红黑树 o(logn)      
AVL树 o(logn)      

注:红黑树和AVL都属于平衡二叉树,以及我真的看不懂这俩。。。

排序算法性能
名称 最好时间复杂度 平均时间复杂度 最坏时间复杂度 辅助空间 是否稳定
直接插入 o(n) o(n^2) o(n^2) o(1)
二分插入 o(n) o(n^2) o(n^2) o(1)
冒泡 o(n) o(n^2) o(n^2) o(1)
归并 o(nlogn) o(nlogn) o(nlogn) o(n)
基数 o(d(rd+n)) o(d(rd+n)) o(d(rd+n)) o(rd+n)
希尔   o(n^1.25)   o(1)
快速 o(nlogn) o(nlogn) o(n^2) o(logn)
直接选择 o(n^2) o(n^2) o(n^2) o(1)
堆排序 o(nlogn) o(nlogn) o(nlogn) o(1)

 

注:归并排序需要开辟额外空间

计数排序:非基于比较的排序(基于统计),时间复杂度o(n+k),空间复杂度为o(k),k为数据范围

 

你可能感兴趣的:(查找,排序算法性能总结)