• 快速排序法


    /**
     * 快速排序实现
     * Created by John Kwok on 2018/2/2.
     */
    import java.util.Arrays;
    public class QuickSort {
        /**
         * 在待排序索引范围内随机选取一个数值,将小于等于该索引处值的数字放置在其左侧,大于的放在其右侧。
         * @param array
         * @param start
         * @param end
         * @return
         */
        public static int partition(int[] array,int start,int end){
            if(array == null||array.length == 0|| start<0 || end >= array.length || start>end) return -1;
            if(start == end) return start;
            int index = (int)(start + Math.random()*(end - start + 1));
            swap(array,index,end);
            int smallNum = start - 1;//注意这里
            for(int i = start ; i <= end ; i++){
                if(array[i] <= array[end]){
                    smallNum++;
                    if(i > smallNum){
                        swap(array,i,smallNum);
                    }
                }
            }
            return smallNum;
        }
    
        /**
         * 使用递归法进行快速排序
         * @param array
         * @param start
         * @param end
         */
        public static void quickSortFun(int[] array,int start,int end){
            if (array == null||array.length == 0||start <0||end >=array.length||start > end) return ;
            int index = partition(array,start,end);
            if(index > start)
                quickSortFun(array,start,index - 1);
            if(index < end)
                quickSortFun(array,index+1,end);
        }
    
        /**
         * 交换数组中两个索引处的值
         * @param array
         * @param i
         * @param j
         */
        public static void swap(int[] array,int i,int j){
            int temp = array[i];
            array[i] = array[j];
            array[j] = temp;
        }
    
        /**
         * 主函数,验证方法
         * @param args
         */
        public static void main(String[] args){
            int[] array = new int[]{1,2,7,3,5,4,2,7,9,2,2,5,76,2,5,2,6,3};
    //        int[] array = new int[]{1,2};
    //        swap(array,0,1);
            quickSortFun(array,0,array.length-1);
            System.out.println("排序结果:"+Arrays.toString(array));
        }
    }
    
    
  • 相关阅读:
    闭包Closures
    jsp中的四种对象作用域
    JFrame小练习1
    swift函数的用法,及其嵌套实例
    图的储存
    洛谷P3366 【模板】最小生成树(Kruskal && Prim)
    洛谷P3371 【模板】单源最短路径(弱化版)(SPFA解法)
    POJ 1577 Falling Leaves
    POJ 3784 Running Median
    洛谷P3374 【模板】树状数组 1
  • 原文地址:https://www.cnblogs.com/guoyaohua/p/8407373.html
Copyright © 2020-2023  润新知