数据结构与算法---快排 Java

快排算法–Java

  • 思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据逗比另一部分所有的数据都要笑,然后按照此方法分别进行排序,整个排序过程采用递归进行,以此到达整个数据有序。
  • 运行截图:
  • 代码:
public class KuaiPai {

    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        int[] arr = {4,2,3,5,1};
        int[] tag = kuaiPaiPaiXu(arr,0,arr.length-1);
        System.out.println("排序后的结果为:");
        for(int i : tag){
            System.out.print(i+"\t");
        }
    }

    /**
     * 递归进行排序得到数组
     * @param arr
     * @param low
     * @param higth
     * @return
     */
    private static int[] kuaiPaiPaiXu(int[] arr,int low,int higth) {
        // TODO 自动生成的方法存根
        if(low < higth){
            int zhongjiefu = fenJieKey(arr, low, higth); 
            kuaiPaiPaiXu(arr, low, zhongjiefu-1);
            kuaiPaiPaiXu(arr, zhongjiefu+1, higth);
        }
        return arr;
    }

    /**
     * 数出分解限,也就是标杆一趟之后的位置
     * @param arr
     * @param low
     * @param higth
     * @return
     */
    public static int fenJieKey(int[] arr,int low,int higth){
        int xiabiao = arr[low]; //默认吧最小的元素作为中轴
        while(low < higth){
            while(low<higth && arr[higth] >= xiabiao){
                higth--;
            }
            arr[low] = arr[higth];//比中轴小的移动到左边
            while(low<higth && arr[low] <= xiabiao){
                low++;
            }
            arr[higth] = arr[low];//比中轴大的移动到右边
        }
        arr[low] = xiabiao;     //中轴记录到尾
        return low; //返回中轴
    }

}

选择排序的链接:(http://blog.csdn.net/qq_30000411/article/details/70185956)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值