1)快排的原理是什么?
1.从数组中选取一个元素作为基准,快速地将该基准排到数组中合适的位置
(该基准的左边都是比该基准小的数,该基准的右边都是比该基准要大的数)
2.按照该基准位置对数组进行拆分,拆分后的数组按照同样地方法进行排序和拆分,直到整个数组有序。
2)快速排序的核心代码实现(单路):
private static void quickSort(int array[],int l ,int r){
if(l>=r){
return;
}
int p = partition(array,l,r);
quickSort(array,l,p-1);
quickSort(array,p+1,r);
}
private static int partition(int[] array, int l, int r) {
int pivot = array[l];
int j = l;
for(int i=l+1;i<=r;i++){
if(array[i] < pivot){
int tmp = array[j+1];
array[j+1] = array[i];
array[i] = tmp;
j++;
}
}
int tmp = array[l];
array[l] = array[j];
array[j] = tmp;
return j;
}
private static void quickSort(int array[],int n){
quickSort(array,0,n-1);
}