修改的Stooge排序算法的运行时间

时间:2015-04-13 22:31:03

标签: algorithm sorting

据我所知,Stooge Sort算法的工作原理如下:

Step 1: If the value at the end is smaller than the value at the start, swap them.
Step 2: If there are 3 or more elements in the list, then:

       Stooge sort the initial 2/3 of the list
       Stooge sort the final 2/3 of the list
       Stooge sort the initial 2/3 of the list again

       else: exit the procedure

我也明白Stooge排序的运行时是O(n ^(log 3 / log 1.5))。

出于好奇,如果我们完全取出步骤1和步骤2中的if条件(假设数组大小总是可以被3整除),Big O表示法中的运行时是什么?

1 个答案:

答案 0 :(得分:0)

在第2步,你还需要一些条件来递归地调用stooge。否则,排序一个长度为10的数组调用排序长度为10 * 2/3的数组,该数组调用排序长度为10 * 2/3 * 2/3的数组,...这样,经过几个步骤后,调用排序长度为0的数组,该数组又调用排序长度为0的数组,依此类推。

在第1步,你仍然需要做一些实际的工作。否则,该函数可能被称为排序,混乱或其他,但实际上是无用的,因为没有任何步骤可以交换任何值。

因此,要直接回答您的问题,运行时将是无限的。但是你提出的两个改变中的每一个都会破坏算法。