java - 使用 Pivot 作为数组中最后一个元素的快速排序分析
问题描述
当您使用 QuickSort 时,我想知道这个数组的 Big-O 是什么:
6 8 7 5 9 4
4
是我的 Pivot 元素。
我认为这将是复杂度为 的最佳情况O(nlogn)
,但我不是 100% 确定。
解决方案
快速排序的 Big-O 复杂度是二次的 ( O(n^2)
)。这意味着对于每个可能的输入,它至少会执行得这么快(或者慢,如果你愿意的话)。
正如评论中提到的,Big-O 处理理论上的最坏情况,而不是特定的输入。对于特定输入,您可以计算绝对步数。
顺便说一句,快速排序(曾经?)非常受欢迎,不是因为它具有良好的 Big-O 性能,而是因为在中等输入大小上具有良好的通常情况下的性能——虽然有一些算法可以执行O(n log n)
(这也是理论上的限制——不能做得更好),它们在实际使用中往往较慢,因为它们具有较大的常数(即渐近更好的性能仅在较大的输入上表现出来)。
推荐阅读
- python - 如何比较 1 个表中对应于日期的 2 个值并在 dyanmo db 中创建另一列
- react-native - 导航:project.testscreen 注册结果为 'undefined'
- selenium - 使用具有相同 selenium 测试的不同页面对象集
- amazon-web-services - 通过 cloudformation 更新现有角色的 iam 策略
- r - 提取由相对于其他相对定位字符定位定义的子字符串
- c# - 使用 ReadPrinter Winspool.Drv 读取打印机数据
- antlr - 如何使用 antlr4 更改上下文的文本
- windows - 在 Python 中执行命令而不关闭 CMD shell
- c# - ClosedXML 在部署到 aws lambda 时引发异常
- c++ - 何时用指针调用 C++ 类构造函数?