c++ - 如何生成用于测试快速排序最佳案例的数组?

标签 c++ algorithm sorting time-complexity quicksort

我想测试快速排序的时间复杂度,但我不知道如何生成数组来测试最佳情况。我的快速排序版本将数组的最后一个元素作为枢轴。

最佳答案

假设所有的数组元素都不同,如果您总是选择最小或最大的元素,那么您显然会遇到最坏的情况。这将为您提供最差的递归深度和最大比较次数。

但最坏的情况下,你也会想要多次交换。当最后一个元素是最小的,或者当它是数组中的最大元素时,检查你的快速排序实现移动了多少个元素。决定什么是最坏的。然后排列数组中的数字,使每个子数组中的最后一个元素始终是最坏的情况。

关于c++ - 如何生成用于测试快速排序最佳案例的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58583266/

相关文章:

c++ - 使用纯虚方法在C++中初始化抽象类

c++ - 将字符串转换为 wstring [没有 locale::global 的俄罗斯符号]

java - Java中具有多个值的列表/数组列表/ HashMap 的排序列表

algorithm - 二进制矩阵的最小覆盖框数

c++ - 根据频率对自定义结构的 vector 进行排序

PHP 分页排序结果

Postgresql - 不正确的排序

c++ - 在 Eclipse CDT 中使用 Clang 静态分析器

c++ - 在 SWIG 中处理来自 self 的特殊实例的类继承

java - 按任意步长旋转数组而不创建第二个数组