posts - 403, comments - 310, trackbacks - 0, articles - 7
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          日歷

          <2007年7月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          相冊(cè)

          搜索

          •  

          積分與排名

          • 積分 - 337550
          • 排名 - 166

          最新評(píng)論

          Stooge sort

          Posted on 2007-07-25 14:13 ZelluX 閱讀(685) 評(píng)論(0)  編輯  收藏 所屬分類: Algorithm
          CLRS page 161
          偽代碼描述:
          Stooge-sort(A, i, j)
          if A[i] > A[j]
              then exchange A[i], A[]
          if i + 1  >= j
              then return
          k = (j - i + 1) / 3
          Stooge-sort(A, i, j - k)
          Stooge-sort(A, i + k , j)
          Stooge-sort(A, i, j - k)
          即先排序前2/3部分,然后是后2/3部分,最后再進(jìn)行前面1/3的排序。

          a. 證明算法正確性
          由于是遞歸算法,而初始狀態(tài)顯然成立,因此只要證明當(dāng)部分排序正確時(shí),整體也能夠被正確排序:
          第一次排序后,第二部分每個(gè)數(shù)都不小于第一部分的所有數(shù);
          第二次排序后,第二部分某些數(shù)被交換到第三部分中,此時(shí)第三部分?jǐn)?shù)都不小于第二部分和第一部分的數(shù),但是第二部分的數(shù)并不一定都小于第一部分的(因?yàn)榭赡馨谌糠值臄?shù),而這些數(shù)與第一部分?jǐn)?shù)的大小關(guān)系無法確認(rèn));
          第三次排序后,第二部分的數(shù)都不小于第一部分的數(shù)。
          這樣,第一部分的任意數(shù)<=第二部分的任意數(shù)<=第三部分的任意數(shù)
          而且各部分的數(shù)都已排序,因此整體已被排序。

          b. 復(fù)雜度分析
          遞歸式
          T(n) = 3T(2n/3) + 1
          由Master Theorem

          T(n) = O(n^log(3/2, 3))
          51La
          主站蜘蛛池模板: 麟游县| 阳曲县| 平湖市| 凤庆县| 泸溪县| 油尖旺区| 麻城市| 黔江区| 永登县| 永和县| 镇赉县| 海兴县| 台中县| 淮滨县| 安乡县| 绩溪县| 延寿县| 军事| 黔东| 织金县| 营口市| 沙田区| 烟台市| 徐水县| 长葛市| 读书| 南靖县| 沿河| 庆元县| 常宁市| 张掖市| 南安市| 连平县| 皮山县| 抚远县| 建平县| 柘荣县| 安岳县| 宝鸡市| 眉山市| 安阳市|