第三章:數組[5常見算法]--[9排序]--[快速排序法]

快速排序法:快速排序法號稱是目前最優秀的算法之一,實現思路是,將一個數組的排序問題當作是兩個小數組的排序問題,而每一個小的數組又能夠繼續當作更小的兩個數組,一直遞歸下去,直到數組長度大小最大爲2。

 

public int[] fastSort(int[] arr,int left,int right){  web

      if(left < right){  算法

          int s = arr[left];  數組

          int i = left;  spa

          int j = right + 1;  code

          while(true){  orm

              //向右找大於s的元素的索引  blog

              while(i+1 < arr.length && arr[++i] < s);  排序

              //向左找小於s的元素的索引  遞歸

              while(j-1 > -1 && arr[--j] > s);  索引

              //若是i >= j 推出循環  

              if(i >= j){  

                  break;  

              }else{  

                  //教化i和j位置的元素  

                  int t = arr[i];  

                  arr[i] = arr[j];  

                  arr[j] = t;  

              }  

          }  

          arr[left] = arr[j];  

          arr[j] = s;  

          //對左面進行遞歸  

          fastSort(arr,left,j-1);  

          //對右面進行遞歸  

          fastSort(arr,j+1,right);  

      }  

      return arr;  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

相關文章
相關標籤/搜索