void process3(int arr[], int len, int L, int R) {
if (L >= R) {
return;
}
int leftIndex = L-1;
int rightIndex = R+1;
int workIndex = leftIndex+1;
int num = arr[R];
while (workIndex < rightIndex) {
if (arr[workIndex] < num) {
//将这个值与 leftIndex+1处的值交换位置 leftIndex++ workIndex++
int temp = arr[workIndex];
arr[workIndex] = arr[leftIndex + 1];
arr[leftIndex + 1] = temp;
leftIndex++;
workIndex++;
}
else if (arr[workIndex] > num) {
// 将 此值与 rightIndex-1 处的位置与它交换 rightIndex-- ,workIndex停住 因为交换过来的没有和前边的比是否比num小
int temp = arr[workIndex];
arr[workIndex] = arr[rightIndex - 1];
arr[rightIndex - 1] = temp;
rightIndex--;
//workIndex++;
}
else if (arr[workIndex] == num) {
workIndex++;
}
}
process3(arr, len, L, leftIndex);
process3(arr, len, rightIndex, R);
}
void quickSort(int arr[], int len) {
if (len < 2) {
return;
}
process3(arr, len, 0, len - 1);
}