C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 使用快速排序观察二次行为 – O(n ^ 2)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
quicksort算法的平均时间复杂度为O(n * log(n)),最差情况复杂度为O(n ^ 2).

假设Hoare的快速排序算法有一些变体,哪种输入会导致快速排序算法表现出最差的复杂性?

请说明与特定快速排序算法的实施细节相关的任何假设,例如枢轴选择等,或者它是否来自诸如libc之类的常用库.

一些阅读:

> A Killer Adversary for Quicksort
> Quicksort Is Optimal
> Engineering a Sort Function
> Introspective Sorting and Selection Algorithms

解决方法

当所选择的枢轴的所有值都是所采集的最大值或最小值时,Quick sort执行最差,即在O(n ^ 2)处.虑这个例子.

1 2 3 4 5

选择的枢轴为1,您将在枢轴的右侧有4个元素,左侧没有元素.递归地应用这个相同的逻辑并且选择的枢轴分别是2,3,4,5,我们已经达到了这种情况,即在最糟糕的时间执行.

已经推荐并证明,如果输入被很好地改进,Quicksort表现良好.

此外,选择排序通常取决于对输入域的清晰知识.例如,如果输入很大,那么有一种称为外部排序的东西可以使用外部存储器.如果输入大小非常小,我们可能会进行合并排序,但不能用于中型和大型输入集,因为它使用额外的内存. Quick sort的主要优点是它的“就地”意义,没有额外的内存用于输入数据.它在纸面上的最坏情况时间是O(n ^ 2),但仍然是广泛优选和使用的.我的观点是,排序算法可以根据输入集的知识和偏好来改变.

大佬总结

以上是大佬教程为你收集整理的c – 使用快速排序观察二次行为 – O(n ^ 2)全部内容,希望文章能够帮你解决c – 使用快速排序观察二次行为 – O(n ^ 2)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。