• 快速排序法


    /**
     * 快速排序实现
     * 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));
        }
    }
    
    
  • 相关阅读:
    微信小程序promise解决onload异步
    小程序中使用 Less (VScode)
    Vue中使用less
    小程序获取 图片宽高
    ssh 登录出现Are you sure you want to continue connecting (yes/no)?解决方法
    SQL SERVER 收缩日志
    SQL SERVER-日期时间
    oracle判断查询结果是否为空
    修改Tomcat默认JDK版本
    Microsoft SQL Server Management Studio ------- 附加数据库 对于 服务器“xxx&amp;amp;quot;失败(错误码5120)
  • 原文地址:https://www.cnblogs.com/guoyaohua/p/8407373.html
Copyright © 2020-2023  润新知