跳转到内容

臭皮匠排序

本页使用了标题或全文手工转换
维基百科,自由的百科全书

这是本页的一个历史版本,由InternetArchiveBot留言 | 贡献2020年9月17日 (四) 09:56 (补救5个来源,并将0个来源标记为失效。) #IABot (v2.0.7)编辑。这可能和当前版本存在着巨大的差异。

臭皮匠排序
使用臭皮匠排序為一列數字進行排序的過程
概况
類別排序算法
資料結構數組
复杂度
最坏时间复杂度O(nlog 3 /log 1.5)
空間複雜度O(n)
最佳解No
相关变量的定义

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

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

实现

  • 如果最后一个值小于第一个值,则交换這兩個數
  • 如果当前集合元素数量大于等于3:
  1. 使用臭皮匠排序法排序前2/3的元素
  2. 使用臭皮匠排序法排序后2/3的元素
  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

参考

  1. ^ 存档副本 (PDF). [2017-11-30]. (原始内容存档 (PDF)于2017-12-01).