快排(冒泡升级版)
快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以
/**
* 快排
* 描述: TODO
*
* @author lyn
* @date 2022/3/3 10:09
*/
public class QuickSort {
?
private static int count;
private static int index;
?
public static void main(String[] args) {
int[] num = {1, 2, 5, 8, 56, 42, 43, 82, 33, 13, 19};
printArrToStr(num, "排序前: ");
//bubbleSort(num);
quickSort(num, 0, num.length - 1);
printArrToStr(num, "排序后: ");
System.out.println("循环次数: " + count);
}
?
/**
* 快排(冒泡的升级版)
*
* @param num 数组
* @param left 左光标的索引
* @param right 右光标的索引
*/
public static void quickSort(int[] num, int left, int right) {
//如果左光标left大于右光标,则停止
if (left >= right) {
return;
}
//记录最初的key
int key = num[left];
int i = left;
int j = right;
while (i < j) {
//右光标左移,遇到比key小的停止
while (num[j] >= key && i < j) {
j--;
}
//左光标右移,遇到比key大的停止
while (num[i] <= key && i < j) {
i++;
}
//相互交换位置