臭皮匠排序

/ 不实用的 / 0 条评论 / 80浏览

臭皮匠排序(英语:Stooge Sort)是一种采用分治法的低效排序算法,甚至慢于冒泡排序。在《算法导论》第二版第7章(快速排序)的思考题中被提到,是由Howard、Fine等教授提出的所谓“漂亮的”排序算法。

该算法得名于三个臭皮匠,每个臭皮匠都能暴打其他两个,其他两个也会卯起来扁其中一个。[1]

目录 1 实现 2 实现示例 2.1 Julia (编程语言) 3 参考 实现 如果最后一个值小于第一个值,则交换这两个数 如果当前集合元素数量大于等于3: 使用臭皮匠排序法排序前2/3的元素 使用臭皮匠排序法排序后2/3的元素 再次使用臭皮匠排序法排序前2/3的元素 algorithm stoogesort(array L, i = 0, j = length(L)-1) if L[j] < L[i] then L[i] ↔ L[j] if (j - i + 1) >= 3 then t = (j - i + 1) / 3 stoogesort(L, i , j-t) stoogesort(L, i+t, j ) stoogesort(L, i , j-t) return L 实现示例 Julia (编程语言)

Julia Sample : Stooge Sort

function StoogeSort(A,v1,v2)

if A[v1]>A[v2]
	A[v1],A[v2] = A[v2],A[v1]
end

if (v2-v1+1)>2
	t = Int(round((v2-v1+1)/3))
			
	StoogeSort(A, v1  , v2-t)
    StoogeSort(A, v1+t, v2  )
    StoogeSort(A, v1  , v2-t)
end
return A

end

Main Code

A = [16,586,1,31,354,43,3] println(A) # Original Array println(StoogeSort(A,1,length(A))) # Stooge Sort Array 参考