感觉把快速排序方法拆开还不错,好理解一点,推荐给大家!!!
public static int getIndex(int []arr,int low,int high){
//将区间的第一个数作为基准数
int tmp=arr[low];
while (low<high){
while (low<high && arr[high]>=tmp){
high--;
}
arr[low]=arr[high];
while (low<high && arr[low]<=tmp){
low++;
}
arr[high]=arr[low];
}
arr[low]=tmp;
return low;
}
public static void querySort(int[]arr,int low,int high){
if(low<high){
int index = getIndex(arr, low, high);
querySort(arr,low,index-1);
querySort(arr,index+1,high);
}
}
@Test
public void test01(){
int []arr={1,3,4545,323,232,221,3,45,1};
querySort(arr,0,arr.length-1);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+",");
}
}
输出:
1,1,3,3,45,221,232,323,4545