慢速排序

✍ dations ◷ 2025-07-01 07:50:58 #慢速排序

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

相关

  • 欧猪四国欧猪五国(英语:PIIGS),亦作黑猪五国或五小猪国,是国际经济界媒体对欧洲联盟五个相对较弱的经济体的贬称。这个称呼涵盖葡萄牙(Portugal)、意大利(Italy)、爱尔兰(Ireland)、希腊(Greece)
  • 犬小孢子菌犬小孢子菌(学名:)是小孢癣菌属下的一种真菌,分布于全球,是造成皮肤感染的重要病源菌之一,对毛发有高度感染力,主要感染猫、狗等宠物,但也可以对人类造成感染。犬小孢子菌的菌丝具有
  • 奥林匹克运动会艺术比赛从1912年到1948年的奥林匹克运动会曾举办了艺术竞争。竞争出自现代奥林匹克运动创建者皮埃尔·德·顾拜旦男爵的想法。奖牌分别授予给五个领域中:建筑学、文学、音乐、绘画,
  • 九龙镇 (涞水县)九龙镇,是中华人民共和国河北省保定市涞水县下辖的一个乡镇级行政单位。九龙镇下辖以下地区:镇厂村、庄里村、庄头村、三道港村、高铺村、岭南台村、柏林城村、南庄村、道沟村
  • 程连昌程连昌(1931年5月-2019年5月8日),吉林省吉林市人,中华人民共和国政治人物。1950年毕业于吉林工业专科学校电机专业。1950年6月加入中国共产党,同年7月参加工作。1960年毕业于中国
  • 克利夫兰骑士赛绩列表克利夫兰骑士赛绩列表列出克利夫兰骑士过往在NBA联盟的成绩。
  • 鲁林多县坐标:1°44′S 30°00′E / 1.733°S 30.000°E / -1.733; 30.000鲁林多县(Rulindo District),是卢旺达的县份,位于该国北部,由北部省负责管辖,首府设于布绍基,面积567平方公里,2012
  • 东海林周太郎东海林周太郎(日语:東海林 周太郎/しょうじ しゅうたろう ,1933年11月12日-2017年7月15日),山形县出身,日本前男子篮球运动员。他曾代表日本参加1956年夏季奥运会和1960年夏季奥运
  • 练江 (广东)练江是广东东部沿海的一条河流,发源于普宁市,源头为五峰山寒妈径,流经汕头市潮南区,在汕头市潮阳区海门镇海门湾入海。是潮阳区、潮南区、普宁市的母亲河。练江全长72公里,流域面
  • 社稷坛社稷坛是祭祀社稷时所用的祭坛。中文的“社稷”一词指代国家。社,是社神,主管土地;稷,是稷神,主管五谷。由于农业对国家的重要性,中国古代的历代帝王都非常重视祭祀社稷。祭祀社稷通常由皇族主持,祈盼五谷丰登、国土太平。社稷坛是重要的礼制建筑,在古代都城规划设计中有重要的地位。按照《周礼·考工记》中“左祖右社”的记载,历代王朝都在都城建造太庙和社稷坛,二者分居左右,但具体位置不尽相同。元代都城大都的太庙在当时的齐化门(今朝阳门)内,社稷坛在平则门(今阜成门)内,虽然也是设在大内宫城的左右,但离皇城较远。祭祀社稷的