核心思想
快速排序的核心思想是分治思想,分而治之,递归处理左右两边的数组,选取数组中的任意一个值,将这个值作为参照,小于等于的放左边,大于等于的放右边,递归结束,排序完成。
代码
//快速排序
public static void Quicksort(int[] arr, int l, int r) {//分治思想,利用递归分而治之
if (l >= r) {
return;
}
int x = arr[l];//小于等于x的值都在x左边,大于等于的都在右边
int i = l - 1, j = r + 1;
while (i < j) {
do {
i++;
} while (arr[i] < x);
do {
j--;
} while (arr[j] > x);
if (i < j) {//i和j还没有相遇
swap(arr, i, j);
}
}
Quicksort(arr, l, j);//递归处理左边
Quicksort(arr, j + 1, r);//递归处理右边
}