美文网首页
递归版快排

递归版快排

作者: YAOPRINCESS | 来源:发表于2020-07-07 23:50 被阅读0次

完整代码

package Sort;

/**
 * @author klr
 * @create 2020-07-07-21:37
 */
public class QuickSort {

    public static void main(String[] args) {

        QuickSort quickSort = new QuickSort();
        int[] array=new int[]{3,6,5,1,7,2,0,9};
        quickSort.DigAHoleToFillTheNumber(array,0,array.length-1);
        for (int i : array) {
            System.out.print(i+" ");
        }
    }

    public void DigAHoleToFillTheNumber(int[] array, int left, int right){
        //出口一定要写
        if(array==null||left>=right)
            return;
        int l=left;
        int r=right;
        int temp=array[left];//把最左边的当作pivot
        while (l < r) {
            while (l < r && array[r] >= temp) {
                r--;
            }
            //找到了比piovt小的
            if (l < r) {
                array[l++]=array[r];//i++,此时i还等于left,先把left用了,right已经空出了
            }
            while (l < r && array[l] <= temp) {
                l++;
            }
            if (l < r) {
                array[r--]=array[l];
            }
        }
        //填坑
        array[l]=temp;
        //递归
        DigAHoleToFillTheNumber(array,left,l-1);
        DigAHoleToFillTheNumber(array,l+1,right);

    }
}

相关文章

  • 递归版快排

    完整代码

  • 快排递归实现

    基本思想:(分治) 先从数列中取出一个数作为key值;将比这个数小的数全部放在它的左边,大于或等于它的数全部放在它...

  • 非递归快排

  • 2018-03-17 考前最后一天

    复习任务 快排: 看一遍 qsort 树: 看AVL树那道题, 基本建法 左旋/右旋操作 四种遍历,递归+迭代版 ...

  • HJ14 字符串排序

    方法一:自带sort方法排序方法二:递归,快排

  • 快速排序

    快排的思想是递归,一次快排函数是使用的双指针。一次快排中,任选一个轴点,一次快排后,左边的元素比它小,右边的元素比...

  • 排序

    八大排序算法 一、归并排序 递归及非递归的JAVA实现 二、快速排序 快排算法JAVA实现 三、堆排序 堆排序堆排...

  • 数据结构与算法相关

    1、快排空间 由于快排是递归的,需要借助一个递归工作栈来保存每一层递归调用的必要信息,其容量与最大深度一致。最好的...

  • 简易快排和二分查找

    1.快排 快速排序有多种实现方式,有递归和非递归,之前遇到的解法多是递归的,而且分成了两部分代码,较难理解和使用,...

  • 快排、双路快排、三路快排(java版)

网友评论

      本文标题:递归版快排

      本文链接:https://www.haomeiwen.com/subject/ebhtcktx.html