码迷,mamicode.com
首页 > 编程语言 > 详细

排序之快速排序

时间:2019-06-20 15:48:52      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:思想   交换   用例   new   ret   数组   com   @param   排序   

package QuickSort;

import MergeSort.MegerSort;
import chooseSort.Example;

/**
 * 快速排序
 * 思想:分而治之;
 * 不断地以第一个元素为基准对当前数组进行分割,直到子数组只有一个元素
 */
public class QuickSort extends Example
{
    public void sort(Comparable[] a, int lo,int hi) {
        if (lo>=hi) return;
        int j = partition(a,lo,hi); //原地切分
        sort(a,lo,j-1);
        sort(a,j+1,hi);
    }

    private int partition(Comparable[] a, int lo, int hi) {
        int i = lo;
        int j = hi+1; //note
        Comparable v = a[lo];//基准数
        while (true){
            //i指向数组范围内比基准数大的值,或者数组最后一个元素
            //j指向数组范围内比基准数小的值,或者数组第一个元素
            while (less(a[++i],v)) if(i==hi) break;
            while (less(v,a[--j])) if(j==lo) break;
            //判断
            if(i>=j) break;
            //交换
            exch(a,i,j);
        }
        exch(a,lo,j);
        return j;
    }
    /**
     * 测试用例
     * @param args
     */
    public static void main(String[] args) {
        Integer[] a = new Integer[]{1,6,34,2,5,3,4,45,6,22};
        QuickSort sort = new QuickSort();
//        sort.merge(a,0,2,a.length-1);
        sort.sort(a,0,a.length-1);
        show(a);
        System.out.println(isSorted(a));
    }
}

 

排序之快速排序

标签:思想   交换   用例   new   ret   数组   com   @param   排序   

原文地址:https://www.cnblogs.com/youzoulalala/p/11058911.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!