八大排序算法之(六)快速排序

public class QuickSort {

int a[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51};  
public QuickSort(){  
    quick(a);  
    for(int i=0;i<a.length;i++){  
       System.out.println(a[i]);  
    }  
}  

public int getMiddle(int[] list, int low, int high) {    
            int tmp =list[low];    //數組的第一個作爲中軸    
            while (low < high){    
                while (low < high&& list[high] >= tmp) {    
                   high--;    
                }    
   
                list[low] =list[high];   //比中軸小的記錄移到低端    
                while (low < high&& list[low] <= tmp) {    
                    low++;    
                }    
   
                list[high] =list[low];   //比中軸大的記錄移到高端    
            }    
           list[low] = tmp;              //中軸記錄到尾    
            return low;                   //返回中軸的位置    
}   
   

public void _quickSort(int[] list, int low, int high) {    
            if (low < high){    
               int middle =getMiddle(list, low, high);  //將list數組進行一分爲二    
               _quickSort(list, low, middle - 1);       //對低字表進行遞歸排序    
               _quickSort(list,middle + 1, high);       //對高字表進行遞歸排序    
            }    
}  
   
public void quick(int[] a2) {    
            if (a2.length > 0) {    //查看數組是否爲空    
                _quickSort(a2,0, a2.length - 1);    
            }    
}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章