Dev@Free

          zJun's Tech Weblog

          [排序] 插入排序

          插入排序,好比是洗撲克一樣,我們將牌分作兩堆,每次從后面一堆的牌抽出最前端的牌,然后插入前面一堆牌的適當(dāng)位置,例如:

          排序前: [92], 77, 67, 8, 6, 84, 55, 85, 43, 67? -- 將數(shù)組分為兩部分,第一個元素為一組

          第 1 次排序:[77 92] 67 8 6 84 55 85 43 67???? -- 將后一組的第一個元素 77 插入前一組的適當(dāng)位置
          第 2 次排序:[67 77 92] 8 6 84 55 85 43 67???? -- 將后一組的第一個元素 67 插入前一組的適當(dāng)位置
          第 3 次排序:[8 67 77 92] 6 84 55 85 43 67???? -- 將后一組的第一個元素?8 插入前一組的適當(dāng)位置?
          第 4 次排序:[6 8 67 77 92 84] 55 85 43 67????? -- 將后一組的第一個元素?6 插入前一組的適當(dāng)位置
          第 5 次排序:[6 8 67 77 84 92 55] 85 43 67????? -- 將后一組的第一個元素?84 插入前一組的適當(dāng)位置
          第 6 次排序:[6 8 55 67 77 84 92 85] 43 67????? -- 將后一組的第一個元素?55 插入前一組的適當(dāng)位置
          第 7 次排序:[6 8 55 67 77 84 85 92 43] 67????? -- 將后一組的第一個元素?85 插入前一組的適當(dāng)位置
          第 8 次排序:[6 8 43 55 67 77 84 85 92] 67????? -- 將后一組的第一個元素?43 插入前一組的適當(dāng)位置
          第 9 次排序:[6 8 43 55 67 67 77 84 85 92]????? -- 將后一組的第一個元素?67 插入前一組的適當(dāng)位置

          Java代碼實現(xiàn),如下:

          /** ?
          ??*?插入排序
          ??*??
          @param ??data:等代排序整型數(shù)組
          ??*?????data?=?{?92,?77,?67,?8,?6,?84,?55,?85,?43,?67?}
          ??*?????排序結(jié)果:
          ??*????????第?1?次排序:77?92?67?8?6?84?55?85?43?67?
          ??*????????第?2?次排序:67?77?92?8?6?84?55?85?43?67?
          ??*????????第?3?次排序:8?67?77?92?6?84?55?85?43?67?
          ??*????????第?4?次排序:6?8?67?77?92?84?55?85?43?67?
          ??*????????第?5?次排序:6?8?67?77?84?92?55?85?43?67?
          ??*????????第?6?次排序:6?8?55?67?77?84?92?85?43?67?
          ??*????????第?7?次排序:6?8?55?67?77?84?85?92?43?67?
          ??*????????第?8?次排序:6?8?43?55?67?77?84?85?92?67?
          ??*????????第?9?次排序:6?8?43?55?67?67?77?84?85?92?
          ???
          */
          ?
          public ? void ?insertSort( int ?data[])? {
          ????????
          int ?k,?temp,?max? = ?data.length;

          ????????
          for ?( int ?i? = ? 1 ;?i? < ?max;?i ++ )? {
          ????????????temp?
          = ?data[i];? // ?后一組的第一個元素
          ????????????k? = ?i? - ? 1 ;? // ?從前一組的最后一個元素開始比較
          ???????????? while ?(temp? < ?data[k])? {
          ????????????????data[k?
          + ? 1 ]? = ?data[k];? // ?如果前一組元素大于后一組第一個元素,則后移
          ????????????????k -- ;
          ????????????????
          if ?(k? == ? - 1 )
          ????????????????????
          break ;? // ?如果前一組元素比較完,則跳出
          ????????????}

          ????????????data[k?
          + ? 1 ]? = ?temp;? // ?插入適當(dāng)?shù)奈恢?/span>

          ????????????System.out.print(
          " ?第?? " ? + ?i? + ? " ??次排序:? " );
          ????????????
          for ?( int ?j? = ? 0 ;?j? <= ?max? - ? 1 ;?j ++ )? {
          ????????????????System.out.print(data[j]?
          + ? " ??? " );
          ????????????}

          ????????????System.out.println();
          ????????}

          ????}

          posted on 2006-07-10 14:32 zJun's帛羅閣 閱讀(507) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          <2006年7月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          統(tǒng)計

          常用鏈接

          留言簿(15)

          隨筆分類

          隨筆檔案

          相冊

          收藏夾

          博客

          文檔

          站點

          論壇

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 荥经县| 科技| 东辽县| 凌海市| 塔城市| 定安县| 禹城市| 饶河县| 龙海市| 合川市| 莎车县| 正宁县| 酉阳| 凉城县| 馆陶县| 延寿县| 长岛县| 隆子县| 通江县| 莆田市| 前郭尔| 邹平县| 景洪市| 北川| 开阳县| 铁岭市| 监利县| 凉山| 铜陵市| 班玛县| 高安市| 台北市| 尤溪县| 宁陵县| 石屏县| 芦山县| 汉阴县| 牟定县| 阿拉善盟| 顺义区| 中西区|