慢速排序

✍ dations ◷ 2025-09-18 23:05:30 #慢速排序

慢速排序是一种排序算法。其基于合并排序的分而治之及递回的思想,并故意设计使排序过程非常缓慢。慢速排序由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} 。由于慢速排序渐近下限的时间复杂度不是多项式时间,即使在最好的情况下也比泡沫排序慢。

相关

  • 重子不对称性重子不对称性是在物理宇宙学一个重要的问题,就是为什么在宇宙中,重子(重子是构成质子、中子等粒子)的数量比反重子多?根据在现在说明宇宙诞生的理论来看,粒子的数量应该和反粒子的
  • 瑰玛·甘甘妮圣瑰玛·甘甘妮(意大利语:Maria Gemma Umberta Pia Galgani,1878年3月12日-1903年4月11日)是一名意大利女神秘家,自1940年起被罗马天主教会尊奉为圣人。她被称为“基督受难的女儿
  • 一氧化二氯一氧化二氯是氯的氧化物之一,化学式为Cl2O。它是次氯酸的酸酐,加热时易爆炸分解,溶于水转变为次氯酸:单质氯气通入新制的黄色氧化汞时可得到一氧化二氯,产率较高:主要的副反应为:工
  • 海桑科海桑科共有2属约7种,生长在非洲的热带地区、马达加斯加岛、东南亚、澳大利亚北部和西太平洋的岛屿上。海桑科植物为灌木或藤本;单叶对生,或螺旋式排列,革质;花的花瓣小,4-8;果实为
  • 坎瑙吉县坎瑙吉县是印度的一个县,位于该国北部,由北方邦负责管辖,面积3,029平方公里,识字率为81.3%,人口在2001至2011年期间增长9.72%,2001年人口4,137,489,人口密度每平方公里1,366人。坐
  • 泡泡袜泡泡袜(日语:ルーズソックス 、和制英语:loose socks),亦称大象袜、堆堆袜,是一种袜子,最初源于美国的登山靴用袜,后来流行于日本高中女学生中。在日本,泡泡袜是学生制服的一种变形,
  • 宏华集团宏华集团有限公司,简称宏华集团(英语:Honghua Group Limited,港交所:0196),于1997年由宏华实业、12名股东,包括张弭(董事长)等人创立,名为“川油广汉宏华有限责任公司”。现时业务则在
  • 米格迪亚峰米格迪亚峰(西班牙语:Penyal des Migdia)是西班牙的山峰,位于巴利阿里群岛的马略卡岛,处于马佐尔峰以南,属于特拉蒙塔纳山脉的一部分,海拔高度1,401米。
  • 石牛山 (台湾)石牛山,位于台湾桃园市复兴区与新竹县关西镇交界处,即石门水库坝区南侧的山峰,与坝区北侧的溪洲山遥遥相望。峰顶海拔671米,为台湾小百岳之一。
  • 亚历山大·涅夫斯基亚历山大·涅夫斯基(Александр Невский,1220年?-1263年11月14日),原名亚历山大·雅罗斯拉维奇(Александр Ярославич),古代罗斯的统帅和政治家,为诺夫哥罗德公国大公(1236年-1252年,1257年-1259年),1246年起成为基辅大公,1252年起成为弗拉基米尔大公。亚历山大·涅夫斯基是弗拉基米尔大公雅罗斯拉夫二世·弗谢沃洛多维奇的儿子。1236年,他被选为诺夫哥罗德大公。他与瑞典侵略者和德意志条顿骑士团的斗争,使今俄罗斯的西北部地区免于被西方天主教国家