第三章:数组[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;  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

相关文章
相关标签/搜索