臭皮匠排序
臭皮匠排序(英语:Stooge Sort)是一种采用分治法的低效排序算法,甚至慢于冒泡排序。在《算法导论》第二版第7章(快速排序)的思考题中被提到,是由Howard、Fine等教授提出的所谓“漂亮的”排序算法。
该算法得名于三个臭皮匠,每个臭皮匠都能暴打其他两个,其他两个也会卯起来扁其中一个。
实现
- 如果最后一个值小于第一个值,则交换这两个数
- 如果当前集合元素数量大于等于3:
- 使用臭皮匠排序法排序前2/3的元素
- 使用臭皮匠排序法排序后2/3的元素
- 再次使用臭皮匠排序法排序前2/3的元素
1
2
3
4
5
6
7
8
9algorithm 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 (编程语言)
1 | # Julia Sample : Stooge Sort |
原文地址:https://zh.wikipedia.org/wiki/%E8%87%AD%E7%9A%AE%E5%8C%A0%E6%8E%92%E5%BA%8F
在知识共享 署名-相同方式共享 3.0协议之条款下提供
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 张拓的博客!