快速排序

    // 快排,双指针挖坑,交互,分治法
    public void quickSort (int[] array,int low, int height) {
        if(low >= height) {
            return;
        }
        int left = low, right = height;
        int base = array[left]; //基数,array[left] 出现坑位
        while (left < right) {
            while (left<right && array[right]>base){
                right--; // 比基数大,继续往低位找
            }
            if (left < right){
                array[left++] = array[right]; // 填到低位坑位中
            }
            while (left<right && array[left]<=base){
                left++; // 比基数小,继续往高位找
            }
            if (left<right){
                array[right--]=array[left];// 填到高位坑位中
            }
        }
        array[left] = base; // 中间位
        quickSort(array,low,left); // 比基数小部分
        quickSort(array,left+1,array.length-1); // 比基数大部分
    }

 

posted @ 2021-04-22 15:49  fosonR  阅读(40)  评论(0编辑  收藏  举报