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帛羅閣 閱讀(604) 評論(0)  編輯  收藏


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


          網站導航:
           

          導航

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

          統計

          常用鏈接

          留言簿(15)

          隨筆分類

          隨筆檔案

          相冊

          收藏夾

          博客

          文檔

          站點

          論壇

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 登封市| 贵州省| 疏附县| 南阳市| 修文县| 临沭县| 河北区| 化州市| 巴彦淖尔市| 邵东县| 鲁甸县| 谢通门县| 页游| 阳原县| 中超| 九龙城区| 辽宁省| 辛集市| 洛扎县| 类乌齐县| 喜德县| 赫章县| 济源市| 姜堰市| 五峰| 兴文县| 白山市| 丹棱县| 吴川市| 藁城市| 蒙阴县| 子长县| 浮山县| 光山县| 普兰店市| 广宁县| 祥云县| 出国| 扎赉特旗| 林甸县| 盱眙县|