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));
        }
    }
    
    
  • 相关阅读:
    Jmeter中的函数和BeanShell
    Jmeter 之关联
    Jmeter 之 参数化
    Jmeter 采样器(Sampler)详细解析
    Jmeter 之 If Controller
    轻松学习redis——第一篇
    如何在linux系统中安装redis
    手把手搭建VMware虚拟机和Linux环境
    线程池(一)
    由浅入深的JVM学习(二)
  • 原文地址:https://www.cnblogs.com/guoyaohua/p/8407373.html
Copyright © 2011-2022 走看看