快速排序 #java实现

快速排序:

    private static void quickSort(int[] arr, int low, int high) {

        if (low >= high) {
            return;
        }
        int central = arr[low];
        int left = low;
        int right = high;
        int pos = 1;
        while (left < right) {
            if (pos == -1) {
                //到左边操作
                if (arr[left] > central) {
                    arr[right] = arr[left];
                    pos = 1;
                    right--;
                } else {
                    while (arr[left] <= central && left < right) {
                        left++;
                    }
                }

            } else {
                //到右边操作
                if (arr[right] < central) {
                    arr[left] = arr[right];
                    pos = -1;
                    left++;
                } else {
                    while (arr[right] >= central && left < right) {
                        right--;
                    }
                }
            }
        }
        arr[left] = central;
        //将pivot中心轴(也就是一个元素),放在left=right相等时的这个索引上
        //将左右子序列提取出来,单独作为数组,重复上面的操作
        quickSort(arr, low, left - 1);
        quickSort(arr, right + 1, high);


    }

  

posted @ 2022-03-28 09:39  小庄的blog  阅读(52)  评论(0编辑  收藏  举报