Java快速排序

2019-11-29  本文已影响0人  黑咔
    public static void quickSost(int arr[], int left, int right) {
        if (left > right) return; // 递归出口
        int l = left, r = right, base = arr[left], temp;

        while (l != r) {
            // 从右往左找,如果找到比基准数大的就停止循环,否则r--
            while (l < r && !(arr[r] < base)) r--;
            // 从左往右找,如果找到比基准数小的就停止循环,否则l++
            while (l < r && !(arr[l] > base)) l++;

            // 交换
            temp = arr[l];
            arr[l] = arr[r];
            arr[r] = temp;

        }
        // 如果基准数比中间元素大,就进行交换
        if (arr[left] > arr[r]) {
            temp = arr[left];
            arr[left] = arr[r];
            arr[r] = temp;
        }
        quickSost(arr, l + 1, right); // 往右递归
        quickSost(arr, left, r - 1); // 往左递归
    }
上一篇 下一篇

猜你喜欢

热点阅读