数组的排序方法

数组的排序方法

3: 快速排序法(二分法)
是一种比较快的排序方法,但比较难于理解

算法思想:
假设数组为:
这里写图片描述
通常情况下把第一个数作为基准数这里记作n。

让变量j从右往左找到一个小于基准数n的数值,再用变量i从左往右找到一个大于基准数n的数值,交换俩值。然后继续走,直到i等于j。

这里写图片描述
然后让下标i所代表的数和基准数交换,就把此数组分成俩部分,在重复同样的步骤,直到只有一个数为止。

代码为:

//这里采用递归
public void sort(int[] array,int left,int right){
        //表示只有一个数
        if(left >= right){
            return;
        }

        //左边索引的位置
        int i = left;
        //右边索引的位置
        int j = right;

        //基准值
        int middle = array[left];
        //临时变量

        //当左边的索引不同于右边的索引先从右边开始
        //直到右边的索引所代表的值比基准值大或等于
        //左边的继续同样的步骤
        while(i != j){
            //右边先走
            while(array[j] <= middle && j > i){
                j--;
            }
            //左边的再走
            while(array[i] >= middle && j > i){
                i++;
            }

            int temp = array[j];
            array[j] = array[i];
            array[i] = temp;
        }

        //i==j时所代表的数组的值与基准值进行交换
        array[left] = array[i];
        array[i] = middle;
        sort(array,left,i-1);
        sort(array,i+1,right);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值