据我所知,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表示法中的运行时是什么?
答案 0 :(得分:0)
在第2步,你还需要一些条件来不递归地调用stooge。否则,排序一个长度为10的数组调用排序长度为10 * 2/3的数组,该数组调用排序长度为10 * 2/3 * 2/3的数组,...这样,经过几个步骤后,调用排序长度为0的数组,该数组又调用排序长度为0的数组,依此类推。
在第1步,你仍然需要做一些实际的工作。否则,该函数可能被称为排序,混乱或其他,但实际上是无用的,因为没有任何步骤可以交换任何值。
因此,要直接回答您的问题,运行时将是无限的。但是你提出的两个改变中的每一个都会破坏算法。