慢速排序

✍ dations ◷ 2025-11-28 15:09:59 #慢速排序

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

相关

  • 电流电流是电荷的平均定向移动。电流的大小称为电流强度,是指单位时间内通过导线某一截面的电荷,每秒通过1库仑的电荷量称为1安培。安培是国际单位制七个基本单位之一。安培计是专
  • 卡西米尔·皮埃尔·佩里埃卡西米尔·皮埃尔·佩里埃(法语:Casimir Pierre Périer)(1777年– 1832年) ,法国政治人物,七月王朝时期曾担任部长会议主席(首相),任职时间为1831年3月13日至1832年5月16日。
  • 天绣天绣(1457年-?)为中国明朝时期陕西起事者王斌的年号,前后共1年。
  • 伊格纳齐·达申斯基伊格纳齐·埃瓦雷斯特·达申斯基(波兰语:Ignacy Ewaryst Daszyński, ),该党后来更名为波兰社会党()。他还在1929年参与创建了中左翼阵线()。达申斯基尽管在1926年5月政变时支持约瑟
  • 妇女参政权公约《妇女参政权公约》,在1978年出版的《人权,国际文件汇编》中译为《妇女政治权利公约》,是1952年12月20日召开的第七届联合国大会上通过的一个公约。1953年3月31日开放签字,1954
  • 刘武元刘武元(?-1654年),汉军镶红旗人。明辽东人。明军游击,随祖大寿守大凌河城。崇祯四年(天聪五年、1631年)投降清军。历官刑部参政、南赣巡抚。永历二年(1648年)降将李成栋对清廷不满,于是
  • 顾正谊顾正谊(?-?),字仲方,晩年自号亭林,华亭县(今上海市松江区)人,是活跃于明末清初的画家,擅长文人画。好友有宋旭、孙克弘等。其家族辈出画家,其子顾元庆,外甥胤光、懿徳,女婿李绍箕等均为画家
  • 乌多·尤尔根斯乌多·尤尔根斯(德语:Udo Jürgens,1934年9月30日-2014年12月21日),本名为尤尔根·乌多·博克尔曼(Jürgen Udo Bockelmann),是一名拥有德国血统的奥地利作曲家、钢琴家及歌手。自200
  • 埃代科杜埃代科杜(Edaikodu),是印度泰米尔纳德邦Kanniyakumari县的一个城镇。总人口23320(2001年)。该地2001年总人口23320人,其中男性11443人,女性11877人;0—6岁人口2439人,其中男1212人,女1
  • 念珠狸藻念珠狸藻(学名:)为狸藻属多年生的小型食虫植物。其种加词“”来源于拉丁文“”和“”,意为“念珠”和“形状”,指其块茎形似念珠。念珠狸藻为斯里兰卡的特有种。其岩生于潮湿的岩