学习文章:这一篇
快速排序其实是冒泡排序的升级版
代码
public class Main {
public static void main(String[] args) {
int arr[] = {998, 7, 1, 2, 9, 3, 936, 5, 4, 6, 0};
quickSort(arr,0,arr.length - 1);
}
public static void quickSort(int[] arr, int l, int r) {
if (l < r) {
int left = l;
int right = r;
int x = arr[l];
while (left < right) {
//先从右往左数,找到第一个比x小的数
while (left < right && arr[right] > x) {
right--;
}
//在进行交换之前,判断下left和right是否满足相应大小关系
if (left < right) {
arr[left] = arr[right];
left++;//此时应该left++,因为left的值已经是“新”的了 最好别变了
}
//然后再从左往右数,找到第一个比x大的数
while (left < right && arr[left] < x) {
left++;
}
//在进行交换之前,判断下left和right是否满足相应大小关系
if (left < right) {
arr[right] = arr[left];
right--;
}
}
//最后别忘了将x赋上去
arr[left] = x;
quickSort(arr, l, left - 1);
quickSort(arr, left + 1, r);
}
System.out.println("排完序的数组为:"+Arrays.toString(arr));
}
}
另外,借用上面链接的文章里面的一张图片,来演示第一次排序过程