快速排序算法

**

快速排序算法

原理

(1):首先设定一个分界值
(2):将大于等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。此时,左边部分中各元素的值都小于分界值,而右边部分各元素都大于等于分界值。
(3):然后,左边和右边的数据可以独立排序。对于左边的数组数据,又可以取一个分界值,将该部分的数据分为左右两部分,同样将左边放置较小值,右边放置较大值。右侧的数组数据也可以做类似的处理。
(4):重复上述的过程,可以看出,这是一个递归定义。通过递归将左侧部分排好序后,在递归排好右侧部分的顺序。当左、右两部分各数据排序完成后,整个数组的排序也就完成了。
代码

package com;

import java.util.Arrays;

/*
* 快速排序算法:
*
* */
public class success {
    public static void main(String[] args) {
        //1:定义一个数组
        int arry[]={2,5,3,9,1,4,6,8};
        //2:传入数据
        quickSort(arry,0,arry.length-1);
    }


    //快速排序算法
    public static void quickSort(int arry[],int L,int R){
        if (L>=R){
            return;
        }
        //1:定义左下标
        int left=L;
        //2:定义右下标
        int right=R;
        //3:定义中间值
        int pivot=arry[left];
        //4:进行选择
        while (left<right){

            //5:先选择pivot右边的数值
            while (left<right&&arry[right]>=pivot){
                right--;
            }

            //6:当右边的数据和中间值相比较小时,交换顺序
            if (left<right){
                arry[left]=arry[right];
            }

            //7:选择pivot左边的值
            while (left<right&&arry[left]<=pivot){
                left++;
            }

            //8:如果比pivot的值大,则改变刚才右边的值
            if (left<right){
                arry[right]=arry[left];
            }

            //9:如果左小标和右下标相遇,则把pivot则把中间值赋值到当前位置
            if (left>=right){
                arry[left]=pivot;
            }
        }
        //10:定义pivot左边再次排序
        quickSort(arry,L,right-1);
        //定义pivot右边再次排序
        quickSort(arry,right+1,R);

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值