直接上代码
public class QuickSortTest2 {
public static void main(String[] args) {
int[] arr = {14, 34, 5, 32, 5, 6, 7, 67, 8, 93, 8, 67, 12};
System.out.println(Arrays.toString(arr));
quickSort(arr, 0, arr.length - 1);
System.out.println(Arrays.toString(arr));
}
private static void quickSort(int[] arr, int left, int right) {
if (left >= right) return;
int base = arr[left];
int i = left;
int j = right+1;
while (true) {
while (i < right && arr[++i] <= base);
while (j > left && arr[--j] >= base);
if (i < j) {
extData(arr, i, j);
} else {
break;
}
}
extData(arr, left, j);
quickSort(arr, left, j - 1);
quickSort(arr, j + 1, right);
}
private static void extData(int[] arr, int i, int j) {
int tem = arr[i];
arr[i] = arr[j];
arr[j] = tem;
}
}
快速排序核心思想:
在数组中随便取一个值作为标准值,以他为标准,左边如果小于他和右边大于的他的交换,这样,他就是有序的了,
按照分治的思想,再把他两边的进行同样的排序,直到分到的集合中只有一个值,那么这个值也是有序的,就完成了排序
如何把集合分开,只至分开的集合都是有序的,那么这种情况就是,当集合种的元素只有一个值的时候,那么集合都是有序的