public class QuikSort {
public static void quick(int[] arr, int begin, int end) {
//防止无限递归
if (begin >= end) {
return;
}
int key = arr[begin];
int keyIndex = begin;
for (int i = begin + 1; i < end; i++) {
if (arr[i] < key) {
//交换一次 keyIndex就要往后移动一位
keyIndex++;
//交换i位置值和keyIndex位置值
int tmp = arr[keyIndex];
arr[keyIndex] = arr[i];
arr[i] = tmp;
}
}
//无小于key位置值后,则交换key和keyIndex值
arr[begin] = arr[keyIndex];
arr[keyIndex] = key;
//切分,递归
quick(arr, begin, keyIndex);
quick(arr, keyIndex + 1, end);
}
public static void main(String[] args) {
int[] arr = new int[7];
arr[0] = 7;
arr[1] = 9;
arr[2] = 18;
arr[3] = 6;
arr[4] = 4;
arr[5] = 8;
arr[6] = 10;
quick(arr, 0, arr.length);
for (int tmp : arr) {
System.out.println(tmp + " ");
}
}
}