說到排序算法,就不得不說優雅而簡練的一種算法——快速排序算法。
快速排序是當前使用率最多,效率最高,速度最快的一種排序算法。
作爲排序算法界的扛把子,快速排序算法無疑是程序員首選的一種排序算法。
首先選擇一個數據作爲基準,然後再讓基準數和其他數據進行對比。
先讓基準數從數組的右邊依次遍歷,直到找到小於基準數數值的數,並將該數與基準數相互交換位置
再讓基準數從數組的左邊依次遍歷,直到找到大於基準數數值的數,並將該數與基準數相互交換位置
循環以上步驟,當以上的步驟執行完畢之後,就確定的基準數的位置。
然後將數組以基準值爲基準劃分爲左右兩個區域
基準值左邊的區域中的數值比基準值小,基準值右邊的區域中的數值比基準值大。
然後將左區和右區以同樣的方式進行判斷和換位。
好了,廢話不多說,小的給各位看官上代碼。
public static int quicksort(int[] array,int lo,int hi){ //傳入數組和索引,lo = [0] ,hi = [array.length() - 1]
int key = array[lo]; //定義變量,爲變量賦值爲第一個數
//判斷 如果數組中不是隻有一個數據,則需要進行排序
while( lo < hi){
//判斷如果最後的數據大於或者等於基準值則將最大索引依次遞減,直到找到比基準值小的數
while(lo < hi&& array[hi] >= key){
hi--;
}
//如果找到符合條件的數值,則將基準值和當前值相互換位
//判斷如果第一個數據小於或等於基準值則將最小索引依次遞 增,直到找到比基準值大的數
while(lo < hi&&array[lo] <= key){
lo++;
}
//如果找到符合條件的數值,則將基準值和當前值相互換位
}
array[hi] = key; //將基準值記錄到尾
return hi; //返回基準值索引public static void sort(int[] array,int lo,int hi){
if(lo >= hi){}
以上是本人對於快速排序的理解
如有不妥之處,請各位大佬指出
謝謝