【问题标题】:How to analyse this particular version of quicksort?如何分析这个特定版本的快速排序?
【发布时间】:2017-01-26 02:13:46
【问题描述】:

我有这个伪代码,我想分析这个算法的时间复杂度但是我不知道它

Proc Sort(A,l,r)
 if(r-l+1<4)
    then Quicksort(A,l,r)
    else
     Sort(A,l,r-3)
     Sort(A,l+3,r)

所以我知道,如果数组的元素小于 4,我们将它通过快速排序,否则我们将数组的大小减少 3,然后传递左右部分所以我们将这样做,直到我们得到准确大小为 n

感谢您的帮助

【问题讨论】:

  • 互联网上有很多这方面的信息。还有你的课本。只需搜索。
  • 您有一个名为Sort 的函数,您可以在其中调用sortQuicksort。它是哪一个?而且这似乎没有基本情况,所以看起来它会永远运行。
  • 对不起,这是我的错,这是一个递归函数,我做了正确的
  • @EugeneSh.我找不到任何东西

标签: algorithm recursion quicksort analysis


【解决方案1】:

好吧,不管这个排序函数是否真的有效,这里计算运行时间的方法很简单:

你写下运行时间的数学表达式作为数组大小的函数:

T(N) = ???

好吧,如果 N

如果 N >= 4,那么我们再次调用 Sort,数组小 3。

所以:

N >= 4 的 T(N) 是 2 * T(N-3)。

现在,应该为您提供运行时分析所需的所有信息。为什么不从这里尝试一下,遇到困难时再联系我们?

【讨论】:

  • 非常感谢如果我尝试解决这个递归问题,我可以使用归纳法来证明 T(n) = O(2^(N/3)-1) 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-24
  • 2019-03-07
  • 2016-12-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多