排序法 | 平均时间 | 最坏情况 | 最好情况 | 稳定度 | 额外空间 | 备注 |
1.直接插入 | O(n2) | O(n2) | O(n) | 稳定 | O(1) | 大部分已排序时较好(简单) |
1.希尔 | O(nlogn) | O(nlogn) | 与步长相关 | 不稳定 | O(1) | n小时较好(较复杂) |
2.冒泡 | O(n2) | O(n2) | O(n) | 稳定 | O(1) | n小时较好(简单) |
2.快排 | O(nlogn) | O(n2) | O(nlogn) | 不稳定 | O(logn) | n大时较好,基本有序时反而不好(较复杂) |
3.直接选择 | O(n2) | O(n2) | O(n2) | 不稳定 | O(1) | n小时较好(简单) |
3.堆排序 | O(nlogn) | O(nlogn) | O(nlogn) | 不稳定 | O(1) | n大时较好(较复杂) |
4.归并 | O(nlogn) | O(nlogn) | O(nlogn) | 稳定 | O(n) | n大时较好(较复杂) |
基数 | O(d(n+r)) | O(d(n+r)) | O(d(n+r)) | 稳定 | O(r) | d为位数,r为基数(较复杂) |
计数 | O(n+k) | O(n+k) | O(n+k) | 稳定 | O(n+k) | 优于比较排序法,0~k为数值范围 |
桶排序 | O(n+c) | O (nlogn):所有的元素落到一个桶中 | O(n) | 稳定 | O(n+m) | n为数的个数,m为桶数 c = n*(logn-logm) 桶越多,效率越高,n=m,达到O(n),但是占用很大的空间,桶内可用快排等 |
【转】找的一份排序算法时间复杂度
最新推荐文章于 2024-09-14 22:25:23 发布