快速排序

快速排序:

快速排序的关键在于partition函数,partition分片确定基准元素的最终位置,然后对基准元素的左右分别进行快排。

public void quickSort(int[] a){
   if(a==null||a.length()<2) return;
   return quickSort(a,0,a.length()-1);
}
public void quickSort(int[] a,int lo,in hi){
   if(lo>=hi) return;
   int i = partition(a,0,a.length()-1);
   quickSort(a,lo,i-1);
   quickSort(a,i+1,hi);
}
public int partition(int[] a,int lo,int hi){
   int i = lo,j = hi,v = a[lo];//左右扫描指针,切分元素
   while(i<j){
      while(i<j&&a[j]>v) j--;
      while(i<j&&a[i]<v) i++;
      if(i>=j) break;
      swap(a,i,j); 
   }
   swap(a,lo,j); //将v = a[j]插入到正确的位置
   return j;
}
public void swap(int[] a,int i,int j){
   int temp = a[i];
   a[i] = a[j];
   a[j] = temp;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值