数据结构与算法之美笔记——排序优化

本文探讨了为何在底层排序实现中选择快速排序,并介绍了如何通过三点取中法和随机数法优化快排,以降低时间复杂度退化的可能。同时,文章分析了Java中List的sort方法,揭示其使用TimSort作为默认排序算法,以及如何根据数据规模调整排序策略。最后总结了快速排序在实际生产中的应用及其局限性。
摘要由CSDN通过智能技术生成

摘要:

快速排序有普适性、原地算法节省空间的优秀特质,当使用「三点取中」和「随机法」降低快排时间复杂度的退化概率后,快排在底层的排序实现中成为广泛应用的算法。

为何是快排

排序算法多种多样,在之前章节中我们已经学习了常见的几种排序算法,各有特点,我们先对它们进行执行效率的比较。

算法名称 时间复杂度 是否原地 是否稳定
冒泡排序 O ( n 2 ) O(n^2) O(n2) ✔️ ✔️
插入排序 O ( n 2 ) O(n^2) O(n2) ✔️ ✔️
选择排序 O ( n 2 ) O(n^2) O(n2) ✔️
归并排序 O ( n log ⁡ ( n ) ) O(n\log\left(n\right)) O(nlog(n)) ✔️
快速排序 O ( n log ⁡ ( n ) ) O(n\log\left(n\right)) O(nlog(n)) ✔️
桶排序 O ( n ) O(n) O(n) ✔️
计数排序 O ( n ) O(n) O
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值