快速排序

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

    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("");
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容