快速排序 详细总结

注意!!!!超级详细的快速排序总结~~~~~~~、

快速排序思路:用人的语言描述就是将数组先找一个标准(不是死的,我拿数组的最后一个数当标准)然后将数组分为两部分,一部分小于这个标准,一部分大于这个标准,那么这个新数组就是三部分:小于这个标准的部分+标准+大于这个标准的部分。然后对那两部分进行递归使用上述方法,那么到最后这个数组就是有序的啦~\(≧▽≦)/~

 

步骤:

      1:让数组的最后一个数当做标准mark,定义p(进行上述方法目标数组的开始下标),r(进行上述方法目标数组的结束下标)p<=(小于标准的部分)<=i    ( i+1)<=(大于标准的部分)<j   然后将最后一个标准和i+1那个位置的数换换位置,那么现在这个数组就是:小于这个标准的部分+标准+大于这个标准的部分    这个构造。

     2:递归调用这个数组的小于标准的部分和大于标准的部分,这时的p  r要变化!!!!!!注意!!所以可以使用参数来告诉方法p  r是什么。

    3:然后递归  递归  递归  。。。。。。到最后就有序了~~~~

貌似也不够详细啊吗,,,,,,那不懂得都可以留言戳我啊,我快马加鞭来拯救您~~~~~

 

代码如下:

 1 //快速排序
 2     public static int partition(int[] array,int p,int r){
 3         int i=p-1;
 4         int mark=array[r];
 5         for(int j=p;j<r;j++){
 6             if(array[j]<mark){
 7                 i++;
 8                 int temp=array[i];
 9                 array[i]=array[j];
10                 array[j]=temp;
11             }
12         }
13         int temp=array[i+1];
14         array[i+1]=array[r];
15         array[r]=temp;
16         return i+1;
17     }
18     
19     public static void quickSort(int [] array,int p,int r){
20         int q;
21         if(p<r){
22             q=partition(array,p,r);
23             quickSort(array,p,q-1);
24             quickSort(array,q+1,r);
25         }
26     }
27     

 

posted @ 2018-05-02 21:10  木&子  阅读(608)  评论(0编辑  收藏  举报