您的位置:首页 > 其它

快速排序

2015-05-11 16:48 141 查看
[code]  快速排序法
  快速排序中体现的思想有分治法.


从小到大排序

1.先从数列中取出一个数作为基准数。

2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。

3.再对左右区间重复第二步,直到各区间只有一个数。

[code]   1.i =L; j = R; 将基准数挖出形成第一个坑a[i]。
   2.j--由后向前找比它小的数,找到后挖出此数填前一个坑a[i]中。
   3.i++由前向后找比它大的数,找到后也挖出此数填到前一个坑a[j]中。
   4.再重复执行2,3二步,直到i==j,将基准数填入a[i]中。


[code]public static void fastSort(int[] array,int start,int end){
        //初始化参数
     int i=start;
     int j=end;

   /*
      i<j 表示值得去排序
   */
     if(i<j){
        //选定开始的元素作为第一个坑
           int base=array[i];
     while(i<j){
         //从右向左的查找
         while(i<j&&(array[j]>=base)){
           j--;
         }

        if(i<j){
                       //如果存在,则填坑,并且产生新坑j
           array[i]=array[j];
           i++;
       }
       //从左向右的查找
       while(i<j&&(array[i]<base)){
         i++;
       }
       if(i<j){
         //如果存在,则填坑,并且产生新坑i
      array[j]=array[i];
      j--;
       }
     }
     array[i]=base;
     //分治法
     fastSort(array,start,i-1);
     fastSort(array,i+1,end);
     }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: