慢速排序

✍ dations ◷ 2025-12-10 23:54:02 #慢速排序

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

相关

  • HO-22Q32, 2QPP, 2RGZ· protein binding· porphyrin-containing compound metabolic process · heme oxidation · cellular iron ion homeostasis · response to oxidat
  • 红船旗红船旗(英语:Red Ensign,Red Duster)是英国的商船旗。最早起源于十七世纪英国皇家海军的船旗,后被英国商船队(英语:British Merchant Navy)使用。其最早出现的年代尚不确定,目前仅有
  • 托马斯·奥拉维茨托马斯·奥拉维茨(Tomáš Oravec,1980年7月3日-),是一名斯洛伐克职业足球运动员,现效力于中超球队陕西浐灞。奥拉维茨在家乡球队科希策开始职业足球生涯,2000年加盟鲁容贝罗克,表现
  • 华盛顿影评人协会奖最佳影片华盛顿影评人协会奖最佳影片(英语:Washington D.C. Area Film Critics Association Award for Best Film)是华盛顿影评人协会奖的主要奖项之一。
  • 国家评论协会奖最佳影片国家评论协会奖最佳影片是国家评论协会自1932年度开始颁发的奖项之一 。
  • 马泰奥·马里亚·博亚尔多马泰奥·马里亚·博亚尔多(英语:Matteo Maria Boiardo,1441年-1494年),文艺复兴时期欧洲作家。他效力于费拉拉宫廷,他创作有喜剧,十四行诗以及一部未完成的传奇小说《恋爱中的奥兰多
  • 越智亮介越智亮介(OCHI Ryosuke)出生于1990年4月7日,是一个日本专业足球员,现效力藤枝MYFC,司职中场。
  • 布干维尔自治区布干维尔自治区(英语:Autonomous Region of Bougainville)是巴布亚新几内亚唯一的自治区。自治区由布干维尔岛、布卡岛及邻近小岛组成,面积9384平方千米,人口249358,临时首府布卡。由于是地理概念上所罗门群岛的一部分,历史上曾被称作北所罗门。2021年7月7日,巴布亚新几内亚总理詹姆斯·马拉佩和布干维尔自治区主席伊斯迈尔·托罗阿马在瓦巴格会面,双方会谈决定,布干维尔将在不早于2025年、不晚于2027年的时间点正式宣布独立。1768年,法国海军上将路易斯·安东尼·布干维尔
  • 杰伊·凯斯林杰伊·凯斯林(英语:Jay D. Keasling,1964年-)是一为化学工程和生物工程教授,任教于加利福尼亚大学伯克利分校。 他也是劳伦斯伯克利国家实验室生物组副主任及联合生物能源研究所的首席执行官 他被看做是合成生物学,特别是其中的代谢工程学领域,的权威之一。凯斯林本科毕业于内布拉斯加大学林肯分校, 在那里,他是一名Delta Tau Delta兄弟会成员。1991年,他在导师伯恩哈德·帕尔松(Bernhard Palsson)的指导下,于密歇根大学完成了他的哲学博士学位。 1991-1992年,凯
  • 物理引擎物理引擎是一个计算机程序模拟牛顿力学模型,使用质量、速度、摩擦力和空气阻力等变量。可以用来预测这种不同情况下的效果。它主要用在计算物理学和电子游戏以及电脑动画当中。物理引擎有两种类型常见的型类:实时物理引擎和高精度物理引擎。高精度的物理引擎需要更多的处理能力来计算非常精确的物理,通常使用在科学研究(计算物理学)和电脑动画电影制作。实时物理引擎使用通常使用在电子游戏并且简化运算,降低精确度增以减少计算时间,得到在电子游戏当中可以接受的的处理速度。2006年2月,Ageia发布了首个专门用来处理物理运算的微型