7-3 Stooge排序
Howard、Fine等教授提出了下面的“漂亮的”排序算法:
a)證明:如果n=length[A],那麼STOOGE-SORT(A, 1, length[A])能正確地對輸入數組A[1...n]進行排序。
b)給出一個表達STOOGE-SORT最壞情況運行時間的遞歸式,以及關於最壞情況運行時間的一個緊確的漸進(Θ記號)界。
c)比較STOOGE-SORT與插入排序、合併排序、堆排序和快速排序的最壞情況運行時間。這幾位終生教授是否真的名符其實呢?
分析與解答:
a)對於數組A[i...j],STOOGE-SORT算法將這個數組劃分成均等的3份,分別用A, B, C表示。
第6-8步類似於冒泡排序的思想。它進行了兩趟:
第一趟的第6-7步將最大的1/3部分交換到C
第二趟的第8步將除C外的最大的1/3部分交換到B
剩餘的1/3位於A,這樣的話整個數組A[i...j]就有序了。
b)比較容易寫出STOOGE-SORT最壞情況下的運行時間的遞歸式
T(n) = 2T(2n/3)+Θ(1)
由主定律可以求得T(n)=n^2.71
c)各種排序算法在最壞情況下的運行時間分別爲:
插入排序、快速排序:Θ(n^2)
堆排序、合併排序:Θ(nlgn)
相比於經典的排序算法,STOOGE-SORT算法具有非常差的性能,這幾位終生教授只能說是浪得虛名了^_^