積少成多

          垃圾堆

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            29 Posts :: 1 Stories :: 5 Comments :: 0 Trackbacks
          一般分如下步驟:
          1)選擇一個(gè)樞紐元素(有很對選法,我的實(shí)現(xiàn)里采用去中間元素的簡單方法)
          2)使用該樞紐元素分割數(shù)組,使得比該元素小的元素在它的左邊,比它大的在右邊。并把樞紐元素放在合適的位置。
          3)根據(jù)樞紐元素最后確定的位置,把數(shù)組分成三部分,左邊的,右邊的,樞紐元素自己,對左邊的,右邊的分別遞歸調(diào)用快速排序算法即可。public static void quicksort(int stru[], int left, int right){

              if(left<right){
                  
          int i=left,j=right;
                  
          int X=stru[i];
                  
          int n=i;
                  
          while(i<j){
                      
          while(X<stru[j]&&j>i){
                          j
          --;
                      }
                      stru[n]
          =stru[j];
                      n
          =j;
                      
          while(X>stru[i]&&i<j){
                          i
          ++;
                      }
                      stru[n]
          =stru[i];
                      n
          =i;
                  }
                  stru[i]
          =X;
                  quicksort(stru,left,j
          -1);
                  quicksort(stru,j
          +1,right);
              }
          }
          posted on 2011-05-26 17:34 思無 閱讀(136) 評論(0)  編輯  收藏

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 紫云| 建瓯市| 梁河县| 大足县| 长寿区| 杭州市| 乐安县| 贡觉县| 家居| 灵石县| 福安市| 桓台县| 海伦市| 罗源县| 阿尔山市| 成都市| 丁青县| 河池市| 乐昌市| 蓝山县| 汝州市| 青田县| 镇沅| 文昌市| 南召县| 锡林郭勒盟| 延寿县| 盈江县| 肥乡县| 安阳县| 墨江| 宁都县| 襄樊市| 延安市| 汾西县| 新干县| 福建省| 吉安市| 万安县| 白山市| 龙岩市|