Dev@Free

          zJun's Tech Weblog

          [排序] 冒泡排序

          冒泡排序, 顧名思義,就是排序時,最大的元素會如同氣泡一樣移至右端,其利用比較相鄰元素的方法,將大的元素交換至右端,所以大的元素會不斷的往右移動,直到適當的位置為止。

          基本的氣泡排序法可以利用旗標的方式稍微減少一些比較的時間,當尋訪完數組后都沒有發生任何的交換動作,表示排序已經完成,而無需再進行之后的循環比較與交換動作,例如:

          排序前:???
          95, 27, 90, 49, 80, 58, 6, 9, 18, 50??

          第 1 次排序:27 90 49 80 58 6 9 18 50 95?
          第 2 次排序:27 49 80 58 6 9 18 50 90 95?
          第 3 次排序:27 49 58 6 9 18 50 80 90 95?
          第 4 次排序:27 49 6 9 18 50 58 80 90 95?
          第 5 次排序:27 6 9 18 49 50 58 80 90 95?
          第 6 次排序:6 9 18 27 49 50 58 80 90 95?
          第 7 次排序:6 9 18 27 49 50 58 80 90 95? -- 沒有改變次序,排序完成


          Java代碼實現

          /* ?*
          ??*?冒泡排序
          ??*?@param?data:等待排序整型數組
          ??*?????data?=?{?95,?27,?90,?49,?80,?58,?6,?9,?18,?50?}
          ??*????排序結果:
          ??*????????第?1?次排序:27?90?49?80?58?6?9?18?50?95?
          ??*????????第?2?次排序:27?49?80?58?6?9?18?50?90?95?
          ??*????????第?3?次排序:27?49?58?6?9?18?50?80?90?95?
          ??*????????第?4?次排序:27?49?6?9?18?50?58?80?90?95?
          ??*????????第?5?次排序:27?6?9?18?49?50?58?80?90?95?
          ??*????????第?6?次排序:6?9?18?27?49?50?58?80?90?95?
          ??*????????第?7?次排序:6?9?18?27?49?50?58?80?90?95?
          ???
          */
          ??
          ???
          public ? void ?sort( int []?data)? {
          ????????
          int ?max? = ?data.length;
          ????????
          boolean ?hasChange? = ? true ;

          ????????
          for ?( int ?i? = ? 0 ;?i? < ?max? - ? 1 ? && ?hasChange;?i ++ )? {
          ????????????hasChange?
          = ? false ;
          ????????????
          for ?( int ?j? = ? 0 ;?j? < ?max? - ?i? - ? 1 ;?j ++ )? {
          ????????????????
          if ?(data[j? + ? 1 ]? < ?data[j])? {
          ????????????????????
          int ?temp? = ?data[j];
          ????????????????????data[j]?
          = ?data[j? + ? 1 ];
          ????????????????????data[j?
          + ? 1 ]? = ?temp;
          ????????????????????hasChange?
          = ? true ;
          ????????????????}

          ????????????}

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

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

          ????}

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


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


          網站導航:
           

          導航

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

          統計

          常用鏈接

          留言簿(15)

          隨筆分類

          隨筆檔案

          相冊

          收藏夾

          博客

          文檔

          站點

          論壇

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 漳州市| 齐河县| 瓦房店市| 奉贤区| 城固县| 宁乡县| 鹤峰县| 兴化市| 巴林右旗| 沿河| 民权县| 林甸县| 安多县| 黄山市| 乐亭县| 牟定县| 商水县| 南宫市| 秭归县| 方正县| 乐山市| 偃师市| 延边| 巨鹿县| 仪征市| 永安市| 铜川市| 商都县| 宜兴市| 无锡市| 铜陵市| 翁源县| 乐山市| 彝良县| 镇康县| 沂水县| 宝山区| 广宗县| 四会市| 伊春市| 天水市|