快速排序

3年前 (2020-03-02) 1260次浏览 已收录 0个评论

冒泡的加强版,速度的快慢取决于选的基准(中轴)

package 排序;

import java.util.Arrays;

public class 快排 {
public static void main(String[] args) {
 int []a= {3 ,2 ,4 ,1};
 kuai(a,0,a.length-1);
 System.out.println(Arrays.toString(a));
}
static void kuai(int a[],int l, int r) {
 if(l>=r)//说明此时左边的值全部小于flag,右边全部大于flag
  return;
 int left=l,right=r;
 int flag=a[l];//基准
 while(left<right) {
  while(left<right && a[right]>=flag) {
   right--;
  }
  if(left<right) {
   //已经找到右边的小于flag,(a[right]>=flag不满足)
   a[left]=a[right];
  }
  while(left<right && a[left]<=flag) {
   left++;
  }
  if(left<right) {
   //已经找到左边的大于flag,(a[left]<=flag不满足)
   a[right]=a[left];
  }
  if(left>=right) {
   a[left]=flag;
  }
 }
 kuai(a,l,right-1);
 kuai(a,right+1,r);
}
}

 


渣渣龙, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:快速排序
喜欢 (0)

您必须 登录 才能发表评论!