十大經典算法之快速排序

  1. 選擇第一個數爲中間數,小於中間數的數放在左邊,大於中間數的數放在右邊。

  2. 遞歸的將中間數左邊和右邊的數都按照第一步進行,直到不能遞歸。

  3. public class QuickSort {
        public static void main(String[] args) {
            int[] str={21,5,6,3,9,51,1,2};
            QuickSort(str,0,str.length-1);
            System.out.println(Arrays.toString(str));
        }
        public static void QuickSort(int[] str,int left,int rghit){
    
          int l=left; //左下標
          int r=rghit;//右下標
          int p =str[(l+r)/2];//中間的數
          while (l<r){
              while (str[l]<p){
                  l++;
              }
              while (str[r]>p){
                  r--;
              }
              if (l==r){
                  break;
              }
              int tem = str[l];
              str[l]=str[r];
              str[r]=tem;
              if (str[l]==p){
                  l--;
              }
              if (str[r]==p){
                  l++;
              }
          }
           if (l==r){
               l++;
               r--;
           }
           if (left<l){
               QuickSort(str, l, rghit);
           }
           if (rghit>r){
               QuickSort(str, left, r);
           }
    }
    }

     

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章