Java实现快速排序

快速排序原理:先从数据序列中选一个元素,并将序列中所有比该元素小的元素都放到它的右边或左边,再对左右两边分别用同样的方法处之直到每一个待处理的序列的长度为1, 处理结束。
java实现代码:

public static int[] QuickSort(int array[], int left, int right)
    {
        if (left>=right)
            return null;
        int i=left;
        int j=right;
        //选取基准值为数组第一位
        int key=array[left];
        while(i<j)
        {
            //向前寻找一个比key小的数
            while(i<j&&key<=array[j])
                j--;
            //找到这个数将其赋给array[i]
            array[i]=array[j];
            //向后寻找一个比key大的数
            while(i<j&&key>=array[i])
                i++;
            array[j]=array[i];
        }
        array[i]=key;
        //循环结束时i=j 此时把key赋给array[i]
        //这一次循环结束后将小于key的数字都放在了左边 大于key的数字都放在了右边
        //但左右还是无序状态 所以还需要通过递归将两边的无序数据进行排序
        QuickSort(array,left,i-1);
        QuickSort(array,i+1,right);
        return array;
    }
    public static void main(String [] args)
    {
        int [] array={5,3,7,6,4,1,0,2,9,10,8};
        array=QuickSort(array,0,10);
        for (int k = 0; k <array.length ; k++) {
            System.out.println(array[k]);
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值