慢速排序

✍ dations ◷ 2025-12-08 20:11:15 #慢速排序

慢速排序是一种排序算法。其基于合并排序的分而治之及递回的思想,并故意设计使排序过程非常缓慢。慢速排序由Andrei Broder及Jorge Stolfi在1986年发表的论文(论文名称是渐进最优算法及计算复杂性理论的戏仿)中提出。

慢速排序是一种原地算法的递回算法。

在简单的虚拟码中,此算法可以被表示为:

procedure slowsort(A, i, j)                           // 排序一個整數或浮點數數列 A,...,A ,若要使用其他的資料類型則必須重載大於或小於運算符    if i ≥ j then        return    m := ⌊(i+j) / 2⌋                                slowsort(A, i, m)                                 // (1.1)    slowsort(A, m+1, j)                               // (1.2)    if A < A then        swap A and A                            // (1.3)    slowsort(A, i, j-1)                               // (2)
  • 以慢速排序法排序前半部的元素(1.1)
  • 以慢速排序法排序后半部的元素(1.2)
  • 比较1.1及1.2排序结果的最后一个元素,选择相对较大的元素放到列表尾端(1.3)
  • 排除1.3的元素后,将列表剩下的元素以慢速排序法排序(2)

以 Haskell(纯函式编程语言)的实现如下:

slowsort :: Ord a =>  -> slowsort xs  | length xs <= 1 = xs  | otherwise      = slowsort xsnew ++   -- (2)    where        l     = slowsort $ take m xs  -- (1.1)      r     = slowsort $ drop m xs  -- (1.2)      llast = last l      rlast = last r      xsnew = init l ++ min llast rlast : init r      m     = fst (divMod (length xs) 2)

复杂度

慢速排序的运行时间关系式为 T ( n ) = 2 T ( n / 2 ) + T ( n 1 ) + 1 {displaystyle T(n)=2T(n/2)+T(n-1)+1} T ( n ) {displaystyle T(n)} 的渐近下限为 Ω ( n log 2 ( n ) ( 2 + ϵ ) ) {displaystyle Omega left(n^{frac {log _{2}(n)}{(2+epsilon )}}right)} for any ϵ > 0 {displaystyle epsilon >0} 。由于慢速排序渐近下限的时间复杂度不是多项式时间,即使在最好的情况下也比泡沫排序慢。

相关

  • 新英格兰新英格兰(英语:New England),是位于美国大陆东北角、濒临大西洋、毗邻加拿大的区域。新英格兰地区包括美国的六个州,由北至南分别为:缅因州、新罕布什尔州、佛蒙特州、马萨诸塞州
  • 波斯湾战争联军介入海上行动空战(英语:Gulf War air campaign)解放科威特(英语:Liberation of Kuwait campaign)停火后海湾战争(英语:Gulf War;阿拉伯语:حرب الخليج الثانية‎)是
  • 西南联合大学国立西南联合大学,简称西南联大,是抗战时期由当时的北大、清华、南开在云南昆明共同组成的大学,前身为国立长沙临时大学。校务最初由当时清华校长梅贻琦、北大校长蒋梦麟和南开
  • 可怕的科學《可怕的科學》是尼克·阿诺撰写、东尼·德·索罗斯绘制插画,由哲学家出版社(英语:Scholastic Corporation)在英国和印度出版的一系列可以分开的套书(除了《Evolve or Die》是由P
  • 格鲁特格鲁特(英语:Groot)是一个出现在漫威漫画出版的美国漫画书中的超级英雄。格鲁特由斯坦·李、杰克·科比、拉里·李伯和迪克·艾尔斯(英语:Dick Ayers)创作,首次出现在《惊奇故事》#
  • 伊东勤教练时期伊东勤(日语:伊東 勤/いとう つとむ ,1962年8月29日-)是日本熊本县熊本市选出身的职业棒球选手,司职一军首席教练,效力于日本职棒中日龙。排名栏显示为1代表球队夺得“日本
  • 漕河泾港漕河泾港,是上海市浦西南部的一条河道,流经徐汇区与闵行区,河道西接新泾港,流贯漕河泾街道,会穆家塘港后称龙华港,东入黄浦江,是龙华港水系的一部分。漕河泾港全长5.5公里,闵行区境
  • 2010年国际象棋世界冠军对抗赛2010年国际象棋世界冠军对抗赛,将产生新的国际象棋世界冠军。2010年由卫冕世界冠军维斯瓦纳坦·阿南德迎接维塞林·托帕洛夫的挑战。2009年2月16日至28日,托帕洛夫和卡姆斯基在保加利亚索非亚进行了8盘棋的较量,两人平分250,000美元的奖金。双方同意新加坡的gnatius Leong(英语:Ignatius Leong)和亚美尼亚的Ashot Vardapetian作为裁判长,加拿大的Hall Bond作为比赛监督人。结果托帕洛夫4½-2½战胜卡姆斯基,取得向阿南德挑战的资格。
  • HethḤet或H̱et是原始迦南字母表中的第八个字母,后来分别演变为了腓尼基字母、叙利亚字母ܚ、希伯来字母ח‎、阿拉伯字母ح‎与提非纳字母ⵃ。腓尼基字母还发展出了希腊字母Η、伊特拉斯坎字母 �、拉丁字母H与西里尔字母И。其中拉丁字母发辅音,而相应的希腊与西里尔字母则发元音。ʾbgdhwzḥṭyklmnsʿpṣqršt
  • 山崎早纪山崎早纪(日语:山崎 早紀/やまざき さき ,1991年11月12日-)是一名出生于日本静冈县的垒球选手,司职外野手,目前效力于日本垒球联盟(日语:日本ソフトボールリーグ)丰田汽车(日语:トヨタ自動車女子ソフトボール部)。她曾随队参加2020年夏季奥林匹克运动会垒球比赛,结果获得金牌。