package snowiest;
import java.util.Arrays;
public class QuickSortDemo {
public static void main(String[] args) {
int[] arr = {9, 8, 4, 3, 5, 7, 6, 1, 2, 6, 1, 1};
qSort(arr, 0, arr.length - 1);
System.out.println("排序完成:" + Arrays.toString(arr));
}
static void qSort(int[] arr, int startIndex, int endIndex) {
printArray(arr, startIndex, endIndex);
int pot = arr[startIndex];
int left = startIndex;
int right = endIndex;
while (true) {
while (right > left) {
if (arr[right] < pot)
break;
right--;
}
while (left < right) {
if (arr[left] > pot)
break;
left++;
}
if (left < right) {
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
} else break;
}
int temp = arr[left];
arr[left] = arr[startIndex];
arr[startIndex] = temp;
if (left - startIndex > 1)
qSort(arr, startIndex, left - 1);
if (endIndex - right > 1)
qSort(arr, right + 1, endIndex);
}
static void printArray(int[] arr, int s, int e) {
System.out.println("当前数组:" + Arrays.toString(arr));
System.out.print("需排序部分:");
System.out.print("[");
for (int i = s; i < e; i++) {
System.out.print(arr[i] + ", ");
}
System.out.println(arr[e] + "]");
}
}