隨筆 - 71  文章 - 15  trackbacks - 0
          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          因為口渴,上帝創(chuàng)造了水;
          因為黑暗,上帝創(chuàng)造了火;
          因為我需要朋友,所以上帝讓你來到我身邊
          Click for Shaanxi xi'an, Shaanxi Forecast
          ╱◥█◣
            |田|田|
          ╬╬╬╬╬╬╬╬╬╬╬
          If only I have such a house!
          〖總在爬山 所以艱辛〗
          Email:myesjoy@yahoo.com.cn
          NickName:yesjoy
          MSN:myesjoy@hotmail.com
          QQ:150230516

          〖總在尋夢 所以苦痛〗

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          Hibernate在線

          Java友情

          Java認(rèn)證

          linux經(jīng)典

          OA系統(tǒng)

          Spring在線

          Structs在線

          專家專欄

          企業(yè)信息化

          大型設(shè)備共享系統(tǒng)

          工作流

          工作流產(chǎn)品

          網(wǎng)上購書

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

           

          /**
          *快速排序算法的應(yīng)用
          快速排序算法比冒泡排序算法的效率更高,它每次都要確定第一個下標(biāo)數(shù)字的位置,流程圖如下所示:(P152)
          本例應(yīng)用到的知識如下:
          (1)。數(shù)組的創(chuàng)建
          (2)。數(shù)組的訪問
          (3)。快速排序算法
          */
          public class  QuickSort
          {
           
          /**主方法*/
           
          public static void main(String[] args) 
           {
            
          int[] nums = {27,8,57,9,23,41,65,19,0,1,2,4,5};//聲明一維數(shù)組并初始化
            System.out.println("該數(shù)組的長度為:" + nums.length);
            System.out.println(
          "*************************************************");
            quickSort(nums,
          0,nums.length-1);//應(yīng)用快速排序算法
            System.out.println("*************************************************");
            System.out.println(
          "已經(jīng)走出quickSort方法,并且下面在主程序中顯示最后結(jié)果");
            
          for(int i = 0; i < nums.length; i++)//顯示排序后的數(shù)組
            {
             System.out.print(nums[i] 
          + ",");
            }
           }

           
          /**快速排序算法*/
           
          public static void quickSort(int[] a,int low0, int hig0)//實參為quickSort(nums, 0, 12)
           {
            
          int low=low0;//low0 = 0
            int hig=hig0;//hig0 = 12
            
            
          if(low >= hig)//條件成立時表示已經(jīng)排序完畢
             return;
            
          //transfer是確定指針方向的邏輯變量
            boolean transfer = true;//默認(rèn)是下標(biāo)指針從后向前移動
            
            
          while(low != hig)
            {
             
          if(a[low] > a[hig])
             {
              
          //交換數(shù)字
              int temp = a[low];
              a[low] 
          = a[hig];
              a[hig] 
          = temp;
              
          //決定下標(biāo)移動,還是上標(biāo)移動
              transfer = (transfer == true? false : true;//這里第一次求的transfer為false
             }
             
          //將指針向前或者后移動
             if(transfer)
             {hig
          --;}//指針向前移動
             else
             {low
          ++;}//指針向后移動   
             
          //顯示每一次指針移動的數(shù)組數(shù)字的變化
             for(int i = 0; i < a.length; i++)
             {
              System.out.print(a[i] 
          + ",");
             }
             System.out.print(transfer 
          + ",");
             
          //此時low = 1, hig = 12
             System.out.println(" (low,hig) =" + "(" + low + "," + hig + ")");          
            }
          //退出while循環(huán)時low == high == 9
            
            
          //將數(shù)組分開兩半重新調(diào)用quickSort()各自快速排序,確定每個數(shù)字的正確位置
            low--;//low == 8
            hig++;// hig == 10
            quickSort(a, low0, low);//quickSort(a, 0, 8)
            quickSort(a, hig, hig0);//quickSort(a, 10,12)      
           }
          }
          //運行結(jié)果如下:
          E:\java\ProgramJava\35lessons\lesson8>javac QuickSort.java
          E:\java\ProgramJava\35lessons\lesson8>java QuickSort
          該數(shù)組的長度為:13
          *************************************************
          5,8,57,9,23,41,65,19,0,1,2,4,27,false, (low,hig) =(1,12)
          5,8,57,9,23,41,65,19,0,1,2,4,27,false, (low,hig) =(2,12)
          5,8,27,9,23,41,65,19,0,1,2,4,57,true, (low,hig) =(2,11)
          5,8,4,9,23,41,65,19,0,1,2,27,57,false, (low,hig) =(3,11)
          5,8,4,9,23,41,65,19,0,1,2,27,57,false, (low,hig) =(4,11)
          5,8,4,9,23,41,65,19,0,1,2,27,57,false, (low,hig) =(5,11)
          5,8,4,9,23,27,65,19,0,1,2,41,57,true, (low,hig) =(5,10)
          5,8,4,9,23,2,65,19,0,1,27,41,57,false, (low,hig) =(6,10)
          5,8,4,9,23,2,27,19,0,1,65,41,57,true, (low,hig) =(6,9)
          5,8,4,9,23,2,1,19,0,27,65,41,57,false, (low,hig) =(7,9)
          5,8,4,9,23,2,1,19,0,27,65,41,57,false, (low,hig) =(8,9)
          5,8,4,9,23,2,1,19,0,27,65,41,57,false, (low,hig) =(9,9)
          0,8,4,9,23,2,1,19,5,27,65,41,57,false, (low,hig) =(1,8)
          0,5,4,9,23,2,1,19,8,27,65,41,57,true, (low,hig) =(1,7)
          0,5,4,9,23,2,1,19,8,27,65,41,57,true, (low,hig) =(1,6)
          0,1,4,9,23,2,5,19,8,27,65,41,57,false, (low,hig) =(2,6)
          0,1,4,9,23,2,5,19,8,27,65,41,57,false, (low,hig) =(3,6)
          0,1,4,5,23,2,9,19,8,27,65,41,57,true, (low,hig) =(3,5)
          0,1,4,2,23,5,9,19,8,27,65,41,57,false, (low,hig) =(4,5)
          0,1,4,2,5,23,9,19,8,27,65,41,57,true, (low,hig) =(4,4)
          0,1,4,2,5,23,9,19,8,27,65,41,57,true, (low,hig) =(0,2)
          0,1,4,2,5,23,9,19,8,27,65,41,57,true, (low,hig) =(0,1)
          0,1,4,2,5,23,9,19,8,27,65,41,57,true, (low,hig) =(0,0)
          0,1,4,2,5,23,9,19,8,27,65,41,57,true, (low,hig) =(1,2)
          0,1,4,2,5,23,9,19,8,27,65,41,57,true, (low,hig) =(1,1)
          0,1,2,4,5,23,9,19,8,27,65,41,57,false, (low,hig) =(3,3)
          0,1,2,4,5,8,9,19,23,27,65,41,57,false, (low,hig) =(6,8)
          0,1,2,4,5,8,9,19,23,27,65,41,57,false, (low,hig) =(7,8)
          0,1,2,4,5,8,9,19,23,27,65,41,57,false, (low,hig) =(8,8)
          0,1,2,4,5,8,9,19,23,27,65,41,57,true, (low,hig) =(5,6)
          0,1,2,4,5,8,9,19,23,27,65,41,57,true, (low,hig) =(5,5)
          0,1,2,4,5,8,9,19,23,27,65,41,57,true, (low,hig) =(6,6)
          0,1,2,4,5,8,9,19,23,27,57,41,65,false, (low,hig) =(11,12)
          0,1,2,4,5,8,9,19,23,27,57,41,65,false, (low,hig) =(12,12)
          0,1,2,4,5,8,9,19,23,27,41,57,65,false, (low,hig) =(11,11)
          *************************************************
          已經(jīng)走出quickSort方法,并且下面在主程序中顯示最后結(jié)果
          0,1,2,4,5,8,9,19,23,27,41,57,65,
          posted on 2006-02-04 19:19 ★yesjoy★ 閱讀(1725) 評論(0)  編輯  收藏 所屬分類: 算法總結(jié)
          主站蜘蛛池模板: 泸溪县| 鸡西市| 来安县| 开远市| 辽中县| 夏河县| 乾安县| 冷水江市| 共和县| 塔河县| 兴安盟| 虹口区| 德格县| 南漳县| 兴和县| 延安市| 芜湖县| 元江| 松溪县| 白玉县| 泰顺县| 甘孜县| 湖州市| 黄冈市| 昂仁县| 山阴县| 武平县| 成武县| 名山县| 手游| 乌兰察布市| 宣汉县| 平武县| 噶尔县| 达孜县| 湘乡市| 农安县| 灵寿县| 额敏县| 大英县| 高淳县|