快速排序的Java實現

2021-09-19 05:45:43 字數 868 閱讀 7797

思路:

以乙個數為基準數(一般為頭數或者尾數),再定義頭尾兩個游標,頭游標依次往右移並進行判斷是否比基準數小直至遇到比基準數大的數;尾游標依次往左移並進行判斷是否比基準數大直至遇到比基準數小的數。接著將兩個游標所在的數進行swap交換操作。

迴圈判斷並進行swap操作,直至left上述1,2完成一次遞迴,將數分成以基準數為標準,左部分比基準數小,右部分比基準數大的兩部分。接著一次遞迴1,2部分,直至完成。

**如下:

public class quicksort 

int start = head;//頭游標

int end = tail;//尾游標

int temp = head;//預設第乙個數為基準數

while (head=arr[head])

//頭游標此時比基準數大,尾游標此時比基準數小,進行swap操作

swap(arr, head, tail);

}//完成一次遞迴,將基準數與頭游標進行交換

swap(arr, temp, head);

//分出來兩部分,依次遞迴排序

quick(arr, start, head-1);

quick(arr, head+1, end);

return arr;

}//交換元素操作

public static void swap(int arr,int head, int tail)

public static void main(string args) ;

int quick = quick(arr, 0, arr.length - 1);

for (int item : quick)

}}

排序 快速排序(java實現)

快速排序是一種非常高效的排序演算法,它採用了 分而治之 的思想,把大的拆分成小的,小的再拆分為更小的。其原理如下 對於給定一組記錄,通過一趟排序後,將原序列分為兩部分,其中前一部分的所有記錄都比後一部分的所有記錄小,然後再依次對前後兩部分的記錄進行快速排序,遞迴該過程,直到序列中所有的記錄均為有序為...

快速排序的Java實現

之前整理過乙份學習筆記放到了部落格上,但是演算法是借用了他人的成果,是看了網上多篇文章之後又寫出來的。寫完的時候還遇到一點小問題,最終的糾正方式也是參考網路文章。今天再次整理一下相關的內容,主要是針對自己曾經有一點迷惑的地方進行思考總結。之前的 packagequicksortpack public...

快速排序的java實現

快排原理 在要排的數 比如陣列a 中選擇乙個中心值key 比如a 0 通過一趟排序將陣列a分成兩部分,其中以key為中心,key右邊都比key大,key左邊的都key小,然後對這兩部分分別重複這個過程,直到整個有序。整個快排的過程就簡化為了一趟排序的過程,然後遞迴呼叫就行了。一趟排序的方法 1,定義...