java实现快排
核心是以第一个或者最后一个数作为中间量,找到其位置后,将数组分为两部分依次调用相同的方法找中间量
核心代码:
public int getMiddle(int[] list,int low,int high) {
int temp = list[low];
while(low<high) {
while(low<high && list[high]>=temp) {
high--;
}
list[low] = list[high];
while(low<high && list[low]<=temp) {
low++;
}
list[high] = list[low];
}
list[low] = temp;
return low;
}
完整快排代码:
package com.hellojava.quickSort;
public class quickSort {
//构造方法不经调用可直接进行排序
public quickSort(int[] a) {
quick(a);
for(int i=0; i<a.length; i++) {
System.out.print(a[i]+" ");
}
}
//找中间量位置
public int getMiddle(int[] list,int low,int high) {
int temp = list[low];
while(low<high) {
while(low<high && list[high]>=temp) {
high--;
}
list[low] = list[high];
while(low<high && list[low]<=temp) {
low++;
}
list[high] = list[low];
}
list[low] = temp;
return low;
}
//递归调用中间量获取方法
public void _quickSort(int[] list,int low,int high) {
if(low<high) {
int middle = getMiddle(list, low, high);
_quickSort(list, 0, middle-1);
_quickSort(list, middle+1, high);
}
}
public void quick(int[] a2) {
if(a2.length>0) {
_quickSort(a2, 0, a2.length-1);
}
}
}