(2021-08-29)快速排序(java实现)

各种排序算法总结

在这里插入图片描述

快速排序思想

  1. 设置一个pivot,把他当成一个中心轴。
  2. 将大于pivot的数字放到pivot的右边。
  3. 将小于pivot的数字放到pivot的左边。
  4. 分别对左右子序列重复以上操作(递归)。

代码实现

public class QueitPaixu {
    /**
     * 快速排序,从小到大排序。通过递归的方式,循环迭代,把数组分成一块一块的进行排序。
     * @param nums:待排序数组
     * @param L:待排序的范围的左边界。
     * @param R:待排序数组的右边界。
     * @return:排序结束的数组。
     */
    public int[] quickSort(int[] nums,int L,int R){
        if (L >= R){      //递归结束条件
            return nums;
        }
        int left = L;
        int right = R;
        int pivot = nums[left];        //哨兵
        while(left < right){
            while (left < right && pivot <= nums[right]){
                /*先用right指向的数跟哨兵进行比较,如果right指向的数小于pivot时,
                向左移动right指针。知道right指向的数小于pivot时停止*/
                right--;
            }
            if (left < right){
                //此时nums[right]小于pivot,交换。
                nums[left] = nums[right];
            }
            while (left < right && pivot >= nums[left]){
                left++;
            }
            if (left < right){
                nums[right] = nums[left];
            }
            if (left == right){
                //当左指针跟右指针相等时,把指向的数设置pivot。
                nums[left] = pivot;
            }
        }
        quickSort(nums,L,right-1);
        quickSort(nums,right+1,R);
        return nums;
    }

    public static void main(String[] args) {
        int[] nums = {7,4,5,6,9,2,8};
        QueitPaixu sort = new QueitPaixu();
        nums = sort.quickSort(nums,0,nums.length-1);
        System.out.println(Arrays.toString(nums));
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值