快速排序算法的思想是:在数组中选取一个数(一般都是选第一个数),分别与其它的每一个数比较,把比这个数小的数放到它的前面,比他大的数放到它的后面,此时数组分成两部分,该数前面的都比它小,后面的都比它大,然后分别对这两部分递归排序算法,就可以实现整个数组的排序。
public static void main(String[] args) {
int [] arr = {65,58,95,10,57,62,13,106,78,23,85};
System.out.println("排序前:"+Arrays.toString(arr));
quickSort(arr,0,arr.length-1);
System.out.println("排序后:"+Arrays.toString(arr));
}
public static void quickSort(int [] arr,int left,int right) {
int pivot = 0;
if(left < right) {
pivot = partition(arr,left,right);
quickSort(arr,left,pivot-1);
quickSort(arr,pivot+1,right);
}
}
private static int partition(int[] arr,int left,int right) {
int key = arr[left];
while(left < right) {
while(left < right && arr[right] >= key) {
right--;
}
arr[left] = arr[right];
while(left < right && arr[left] <= key) {
left++;
}
arr[right] = arr[left];
}
arr[left] = key;
return left;
}
解析如下:
此上过程是完成了一次排序,partition()方法返回int类型的left,arr[left]将整个数组分成了两部分,左边的部分都比它小,右边的部分都比它大。然后运用递归的方法,分别对左边的数组部分和右边的部分重复上面的操作,最终可以实现数组的排序。
参考:http://blog.51cto.com/13733462/2113397