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

    package com.hb.jzoffer;
    
    import java.util.Random;
    
    import offer.utilities.ArrayUtils;
    
    
    public class QuickSort {
        
        public QuickSort() {
            // TODO Auto-generated constructor stub
            
        }
        
        //快速排序 (两端交替着向中间扫描)
        
        private  static  int RandomInRange(int  min , int max){
            if(min < max){
    //            Random   random = new Random();
    //            int s  = random.nextInt(max)%(max - min + 1) + min ;
                int s = (int)( Math.random() * (max - min) + min );
                return  s ;            
            }else
                return -1 ;        
        }
        
        
        
        public  int  Partition(int[] data , int  start , int  end){
            int  length = data.length;
            if(data == null || start < 0  || end >= length){
                return -1;            
            }
            //随机产生一个index,将此index里面的数值和最后的数值对换
            int  index = RandomInRange(start , end );        
            if(index != -1){
                ArrayUtils.exchangeElements(data, index, end);
                int  small = start - 1 ;
                for(index = start ; index < end ; ++index){
                    if(data[index] < data[end]){
                        ++ small;
                        if(small != index){
                            ArrayUtils.exchangeElements(data, index, small);
                        }
                    }
                }
                ++small;
                ArrayUtils.exchangeElements(data, small, end);
                return small;            
            }else{
                return -1;
            }
            
        }
        
        public void  QuickSort(int[] data , int length , int start , int end){
            if(start == end ){
                return ;
            }
            int  index = Partition(data, start, end);
            if(index > start){
                QuickSort(data, length, start, index -1) ;
            }
            if(index < end ){
                QuickSort(data, length, index + 1, end);
            }
        }
        
        public static void main(String[] args) {
            QuickSort  quickSort = new QuickSort() ;
            
            int[] data = { 3, 6, 1  ,2, 4 , 5};
            
            int length = data.length;
            int start = 0 ;
            int end = length - 1 ;
            
            quickSort.QuickSort(data, length, start, end);
            
            ArrayUtils.printArray(data);
            
            
        }
        
    }
  • 相关阅读:
    ubuntu故障处理
    最全http状态码
    go故障排查集锦
    docker知识11---docker service
    docker知识10---docker secret
    windows安装mysql
    信息收集
    模块
    Django:中间件
    Django:ORM单表操作
  • 原文地址:https://www.cnblogs.com/Mokaffe/p/4360928.html
Copyright © 2011-2022 走看看