java算法之快速排序

2018-11-13  本文已影响0人  上下而求索
public class QuickSort {

    
    
    public static void main(String[] args) {
        
        int[] list= {49,38,65,97,76,13,27};
        
        quickSort(list, 0, list.length-1);
    }
    
    public static void quickSort(int []arr,int low,int high) {
        
        
        if(low<high) {
            
            int mid=partition(arr, low, high);
            //左边的进行分区
            quickSort(arr, low, mid-1);
            
            //右边的进行分区
            quickSort(arr, mid+1, high);
        }
    }
    
    
    public static int partition(int[]array,int low,int high) {
        
        //设置两个变量  i   j    i=0    j=high
        
        //以数组的第一个元素作为关键字
        int key=array[low];  
        
        int i=low,j=high;
        if(low<high) {
            
            while(i<j) {
                
                //由J开始向前搜索
                while(i<j&&array[j]>=key) {
                    
                    j--;
                }
                if(i<j) {
                    
                    array[i]=array[j];
                    i++;
                }
                
                //从i 开始搜索
                while(i<j&&array[i]<=key) {
                    
                    i++;
                }
                if(i<j) {
                    
                    array[j]=array[i];
                    j--;
                }
            }
            array[i]=key;
            
            System.out.println("每次排序的结果"+Arrays.toString(array));
        }
        
        return i;
    }
}
上一篇 下一篇

猜你喜欢

热点阅读