慢速排序

✍ dations ◷ 2025-12-01 15:11:42 #慢速排序

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

相关

  • 腺嘌呤腺嘌呤(英语:Adenine,简称A,旧称维生素B4)是一种嘌呤,在生物化学上具有许多不同的功用。于细胞呼吸中,是以富有能量的腺苷三磷酸(ATP),以及辅因子烟酰胺腺嘌呤二核苷酸(NAD)、黄素腺嘌呤
  • 马罗岛马罗岛(朝鲜语:마라도/馬羅島 Mara do */?)是大韩民国最南端的岛。行政上属于济州特别自治道西归浦市大静邑,位于济州岛以南11公里。全岛单独成为一个里,是为马罗里。马罗岛面积
  • 三门湾三门湾是中国浙江省东部的一个海湾,位于宁波市和台州市之间,两市分界于旗门港。三门湾得名于海湾东北部的三门山,因其山形似三门而得名。历来为海防要地,风景优美。三门湾为一半
  • 徐孝刚徐孝刚(1880年-1956年),别字申甫,四川成都府人,另载四川华阳人,中华人民共和国政治人物、中国近代军事将领。1901年考取公费留学日本,先入日本陆军成城学校完成预备学业,继入日本陆军
  • 帛斑蝶属共12种,详见正文。帛斑蝶属(Tree Nymphs,Paper Kite,学名:)是斑蝶亚科斑蝶族中的一属。物种分布于东南亚至大洋洲一带。
  • 亚瑟·艾利斯奖亚瑟·艾利斯奖(英语:Arthur Ellis Awards)为加拿大一年一度最高荣誉的推理文学奖,颁赠予评选为最佳的犯罪或悬疑小说。该奖以加拿大著名的刽子手亚瑟·艾利斯(Arthur Ellis)命名,
  • 濛河分洪道濛河分洪道是淮河左岸于安徽省阜南县西南王家坝镇以西分流洪水的河道,是古濛河改道后留给淮河的行洪通道,汇集了洪河分洪道及阜南县南部小支流来水入淮河道。1951年建濛洼蓄洪
  • 卡洛·科斯特利卡洛·耶尔·科斯特利·莫利纳(Carlo Yaír Costly Molina,1982年7月18日-),是一名洪都拉斯足球运动员。科斯特利是洪都拉斯前国脚安东尼·科斯特利之子。幼时父母离婚后,他随母亲
  • 马里博尔主教座堂马里博尔主教座堂(斯洛文尼亚语:mariborska stolnica)是位于斯洛文尼亚东北部城市马里博尔的一座罗马天主教的教堂,献给圣若翰洗者。教堂本为罗马式建筑,但在历史上经过了多次改建,形成现在的外观。坐标:.mw-parser-output .geo-default,.mw-parser-output .geo-dms,.mw-parser-output .geo-dec{display:inline}.mw-parser-output .geo-nondefault,.mw-parser-out
  • 布洛特-斯文布洛特-斯文(瑞典语:Blot-Sven;?-1087年)或称为牺牲者斯文。瑞典斯滕克尔王朝国王(1084年-1087年在位)。因为在西约塔兰法没有记载斯文在统治者列表中,所以认为他的统治并没有到达西约特兰。根据瑞典历史学家阿道夫·舒克(AdolfSchück)的论据,不应以布洛特-斯文作为一个个体的国王,因为有迹象表明这可能是国王红色哈康的另一个名字。根据《海瓦尔和海德里克传奇》,瑞典国王老英格_(一世)娶了布洛特-斯文的妹妹Mær,所以他是老英格的妻舅。约于1084年,瑞典人因为老英格不尊重传统、拒绝