首页 > 代码库 > 各种查找排序算法比较

各种查找排序算法比较

算法 平均时间 最差时间 最好时间 稳定度 空间 备注 思想
插入 O(n2) O(n2) O(n) 稳定 O(1) 大部分已排序时较好  
希尔 O(nlogn) O(ns)[s属于(1,2)] O(n) 不稳定 O(1) s是所选分组  
冒泡 O(n2) O(n2) O(n) 稳定 O(1) n小时较好  
快速 O(nlogn) O(n2) O(nlogn) 不稳定 O(nlogn) n大时较好 分治法
交换 O(n2) O(n2) O(n) 不稳定 O(1) n小时较好  
选择 O(n2) O(n2) O(n2) 不稳定 O(1) n小时较好  
O(nlogn) O(nlogn) O(nlogn) 不稳定 O(1) n大时较好  
归并 O(nlogn) O(nlogn)) O(nlogn)) 稳定 O(n) n大时较好 分治法
基数 O(d(r+n)) O(d(r+n)) O(d(r+nd)) 稳定 O(n) B是真数(0-9),R是基数(个十百)  
傅里叶变换             分治法
最长公共子序列             动态规划
克鲁斯卡尔 O(eloge)         最小生成树,e为边数目 贪心法
普里姆 O(n2)         最小生成树 贪心法
迪杰斯特拉 O(n2)         点的最短路径 动态规划
佛洛依德 O(n3)         点对的最短路径 动态规划
拓扑排序 O(n+e)            
关键路径 O(n+e)            
辗转相除法 O(logn)         最大公约数,gcd(a,b)= gcd(b,a mod b)  

转自Cblog->java成长之路

各种查找排序算法比较