1
快速排序是在待排序的数组中找到一个数作为分隔符,大于这个数的放到一起,小于这个数的放到一起。一次进行递归直到排序结束
2
核心代码
public void recQuickSort(int left, int right) {
if (left - right >= 0) {
return;
} else {
int pivot = arr[right];
int partition = partitionIt(left, right, pivot);
recQuickSort(left, partition - 1);// 前一部分划分;
recQuickSort(partition+1, right);// 后一部分划分;
}
}
获取分隔符以及进行换位的代码
public int partitionIt(int left, int right, int val) {
int lefttemp = left - 1;
int righttemp = right+1;
while (true) {
// 找小的 左到右
while (lefttemp < right && arr[++lefttemp] <= val) {
}
// 找小的 右到左
while (righttemp > left && arr[--righttemp] >= val) {
}
if (lefttemp >= righttemp) {
break;
} else {
swap(lefttemp, righttemp);
}
}
swap(lefttemp, right);
return lefttemp;
}
public void swap(int dex1, int dex2) {
int temp = arr[dex1];
arr[dex1] = arr[dex2];
arr[dex2] = temp;
}