【问题标题】:How can I generate arrays for testing Best Case of quickSort?如何生成用于测试快速排序最佳案例的数组?
【发布时间】:2020-02-23 06:24:24
【问题描述】:

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

【问题讨论】:

  • 你试过所有元素都一样吗?对于大多数“我自己的”实现来说,这是最坏的情况
  • 为了最好的情况,数组必须已经排序(默认为升序)。因此生成测试用例,使得数组的第 i 个元素严格大于第 (i-1) 个元素。
  • 对于快速排序来说,已经排序不是最坏的情况吗?我知道,在最好的情况下,分区后枢轴将处于中间位置。但我不知道如何生成这样的数组。

标签: c++ algorithm sorting time-complexity quicksort


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2022-11-17
    • 2015-08-26
    • 2020-01-01
    • 1970-01-01
    • 2013-02-25
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多