快速排序

快速排序将第一个数值作为基准值,从右往左找到比基准值小的数值与从左往右的大于基准值的数值交换(必须先从右往左再从左往右)当两边重叠的时候,那么当前索引位置就是基准值的中间位,此时左边的数值全部小于基准值,右边的数值全部大于基准值,对两边进行二分递归排序。

    public static void quicksort(int[] nums,int first,int last){
        if(first>=last)
        {
            return;
        }
        int i=first;
        int j=last;
        int flag=nums[i];
        while(i != j){
            for(;i < j && nums[j] >= flag; j--){}
            for(;i < j && nums[i] <= flag; i++){}
            int temp=nums[i];
            nums[i]=nums[j];
            nums[j]=temp;
        }
        
        nums[first]=nums[i];
        nums[i]=flag;
        quicksort(nums,first,i-1);
        quicksort(nums,i+1,last);
        
        for(int n:nums)
        {
            System.out.print(n+",");
        }
        System.out.println("");
    }

你可能感兴趣的:(快速排序)