排序算法:快速排序

快速排序

  1. 选定Pivot中心轴
  2. 将大于Pivot的数字放到Pivot的右边
  3. 将小于Pivot的数字放到Pivot的左边
  4. 分别对左右子序列重复前面三个步骤

第一步:准备数据

第二步:选定中心轴Pivot 

 

第三步:右侧下标R往左移动,直到数值比基准值Pivot小停止,将对应数值放到左侧下标L处。

 

 

 第四步:左侧下标L往右移动,直到数值比基准值Pivot大停止,将对应数值放到右侧下标R处。 

 

  

 

第五步:左侧下标L与右侧下标R重合后,将基准值Pivot放到重合下标处。 

 

 第六步:分成左右两个子序列后,重复以上步骤。

代码实现:

public class QuickSort {
    public static void main(String[] args) {
        int[] arry = {19, 97, 9, 17, 1, 8};
        sort(arry, 0, arry.length - 1);
        System.out.println(Arrays.toString(arry));
    }


    public static void sort(int arry[], int L, int R) {
        if (L >= R) {
            return;
        }

        int left = L;
        int right = R;
        int pivot = arry[left];

        while (left < right) {
            while (left < right && arry[right] > pivot) {
                right--;
            }
            if (left < right) {
                arry[left] = arry[right];
            }

            while (left < right && arry[left] < pivot) {
                left++;
            }
            if (left < right) {
                arry[right] = arry[left];
            }

            if (left >= right) {
                arry[left] = pivot;
            }
        }
        sort(arry, L, right - 1);
        sort(arry, right + 1, R);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值