常用排序算法的时间复杂度和空间复杂度
来源:互联网 发布:mysql可视化面板 编辑:程序博客网 时间:2024/05/22 14:30
总结:
(1)当排序记录个数n较大,关键码分布较随机,且对稳定性不作要求时,采用快速排序为宜。
(2)当待排序记录个数n较大,内存空间允许,且要求稳定排序时,采用归并排序。
(3)当待排序记录个数n较大,关键码分布可能出现正序或逆序的情况,且对稳定性不作要求时,采用堆排序或归并排序。
(4)当待排序记录个数n较大,而只要找出最小的前几个记录,采用堆排序或简单选择排序。
(5)当待排序记录个数n较小(如小于100)时,记录已基本有序,且要求稳定时,采用直接插入排序。
(6)当待排序记录个数n较小,记录所含数据项较多,所占存储空间较大时,采用简单选择排序。
补充:
时间复杂度和空间复杂度
顾名思义,时间复杂度,就是说算法在运行过程中所耗用的时间,而空间复杂度,则是算法运行过程中所占用的空间(内存、硬盘等等)。
在算法中怎么去衡量【时间复杂度】、【空间复杂度】的复杂级别呢,这里有一个专业名词叫大O阶。
推导大O阶方法:
1、用常量1取代算法中的所有加减法操作。
2、在修改后的运行次数函数中,只保留最高阶项。
3、如果最高阶项存在的不是1,则去除与这个项相乘的参数。
例子
根据推导大O阶方法:
1、上面运行的次数3,用常量1表示。
2、没有最高阶
例子:
在这段程序中,会运行n/2次。
根据推导大O阶方法:
1、上面运行的次数n/2,不是常量。
2、最高阶,X=log2n。
再如下面平方阶的例子
一共循环 n x n 次
根据推导大O阶方法:
1、上面运行的次数n x n,不是常量。
2、最高阶,X=n2。
再看例子
根据推导大O阶方法:
这里要看我最后一个红框内容,他用到了推导方法中的第三点,如果最高阶项存在的不是1,则去除与这个项相乘的参数。
所以最终大O阶为:O(n2)
常见时间复杂度:
参考资料:数据结构–算法(时间复杂度和空间复杂度)
- 常用的排序算法的时间复杂度和空间复杂度
- 常用的排序算法的时间复杂度和空间复杂度
- 常用的排序算法的时间复杂度和空间复杂度
- 常用的排序算法的时间复杂度和空间复杂度 .
- 常用的排序算法的时间复杂度和空间复杂度
- 常用的排序算法的时间复杂度和空间复杂度
- 常用的排序算法的时间复杂度和空间复杂度
- 常用的排序算法的时间复杂度和空间复杂度
- 常用的排序算法的时间复杂度和空间复杂度
- 常用的排序算法的时间复杂度和空间复杂度
- 常用的排序算法的时间复杂度和空间复杂度
- 常用的排序算法的时间复杂度和空间复杂度
- 常用的排序算法的时间复杂度和空间复杂度
- 常用的排序算法的时间复杂度和空间复杂度
- 常用的排序算法的时间复杂度和空间复杂度
- 常用的排序算法的时间复杂度和空间复杂度
- 常用的排序算法的时间复杂度和空间复杂度
- 常用的排序算法的时间复杂度和空间复杂度
- 64. Minimum Path Sum
- poj之旅_2184
- C primer plus 第八章 例题疑问(递归)(求解答求回复)
- App Store研究:iOS APP提交上架最新流程
- 图片的分辨率大于设备分辨率或者小于设备的分辨率的显示问题
- 常用排序算法的时间复杂度和空间复杂度
- Web提醒服务的四种实现方式比较
- 59. Spiral Matrix II
- call by value 和 call by reference
- [Android进阶]Java、Android 内存泄漏总结
- C#神器 委托 + Unity神器 协程
- THE ONE使用笔记(3)——DirectDelivery源码分析
- [HDU 4336] Card Collector (期望DP)
- (2.2.8.4 & 4.4.15.1)Gradle:multiDexEnabled之DEX 方法超过64K限制和gradle编译OOM问题解决