快速排序 QuickSort

 public static int[] sort(int[] ints, int left, int right) {
        //左边指针
        int l = left;
        //右边指针
        int r = right;
        //中间指针
        int mid = (left + right) / 2;
        //临时变量
        int temp;
        //左指针在右指针的前面时,进行循环
        while (l < r) {
            //找到一个在左边的比数组中间值小的数
            while (ints[l] < ints[mid]) {
                l = l + 1;
            }
            //找到一个在右边的比数组中间值小的数
            while (ints[r] > ints[mid]) {
                r = r - 1;
            }
            //当找到这两个数时,如果左指针大于了又指针,则停止
            if (l >= r) break;
            //否则进行交换
            temp = ints[r];
            ints[r] = ints[l];
            ints[l] = temp;
        }
        //左递归对左边数组继续排序
        if (left < r) sort(ints, left, r);
        //右递归对右边数组继续排序
        if (right < l) sort(ints, l, right);
        //返回排好序的数组
        return ints;
    }

猜你喜欢

转载自blog.csdn.net/gg649940992/article/details/110129919