• 排序之快速排序


    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));
        }
    }
  • 相关阅读:
    SytemC on CentOS 5.3 64bit
    Fast Poisson Disk Sampling
    Geometry Imager Viewport Filter
    Dinornis – Rendering your Model in Mudbox by RenderMan Directly !
    Models of biological pattern formation
    OrthoLab
    如何编译ATILA GPU Emulator
    感受谷歌地图
    树状列表完成
    获取地图标记点经纬度
  • 原文地址:https://www.cnblogs.com/youzoulalala/p/11058911.html
Copyright © 2020-2023  润新知