zoukankan      html  css  js  c++  java
  • 快速排序法

    /**
     * 快速排序实现
     * 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));
        }
    }
    
    
  • 相关阅读:
    SQL学习笔记 where子句用法,like关键字 嵌套查询
    Mvc视图构建辅助方法
    EXtjs 解决ie9 不支持extjs对象的 “createContextualFragment”属性或方法
    认识MVC
    Mvc基本切入及controller认识
    Extjs4.0 下载文件的说明
    Extjs4 Panel中使用autoload无法加载页面文件
    Mvc视图表单辅助方法
    js倒计时方法
    web confing 处理全局编码方式
  • 原文地址:https://www.cnblogs.com/guoyaohua/p/8407373.html
Copyright © 2011-2022 走看看