快排原理:
在要排的數(比如陣列a)中選擇乙個中心值key(比如a[0]),通過一趟排序將陣列a分成兩部分,其中以key為中心,key右邊都比key大,key左邊的都key小,然後對這兩部分分別重複這個過程,直到整個有序。
整個快排的過程就簡化為了一趟排序的過程,然後遞迴呼叫就行了。
一趟排序的方法:
1,定義i=0,j=a.lenght-1,i為第乙個數的下標,j為最後乙個數下標
2,從陣列的最後乙個數aj從右往左找,找到第一小於key的數,記為aj;
3,從陣列的第乙個數ai 從左往右找,找到第乙個大於key的數,記為ai;
4,交換ai 和aj
5,重複這個過程,直到 i=j
6,調整key的位置,把a[i] 和key交換
public void quicksort(inta,int left,int right)
} a[left]=a[i];
a[i]=pivot;//把基準值放到合適的位置
quicksort(a,left,i-1);//對左邊的子陣列進行快速排序
quicksort(a,i+1,right);//對右邊的子陣列進行快速排序
}
排序 快速排序(java實現)
快速排序是一種非常高效的排序演算法,它採用了 分而治之 的思想,把大的拆分成小的,小的再拆分為更小的。其原理如下 對於給定一組記錄,通過一趟排序後,將原序列分為兩部分,其中前一部分的所有記錄都比後一部分的所有記錄小,然後再依次對前後兩部分的記錄進行快速排序,遞迴該過程,直到序列中所有的記錄均為有序為...
快速排序的Java實現
之前整理過乙份學習筆記放到了部落格上,但是演算法是借用了他人的成果,是看了網上多篇文章之後又寫出來的。寫完的時候還遇到一點小問題,最終的糾正方式也是參考網路文章。今天再次整理一下相關的內容,主要是針對自己曾經有一點迷惑的地方進行思考總結。之前的 packagequicksortpack public...
快速排序的Java實現
思路 以乙個數為基準數 一般為頭數或者尾數 再定義頭尾兩個游標,頭游標依次往右移並進行判斷是否比基準數小直至遇到比基準數大的數 尾游標依次往左移並進行判斷是否比基準數大直至遇到比基準數小的數。接著將兩個游標所在的數進行swap交換操作。迴圈判斷並進行swap操作,直至left上述1,2完成一次遞迴,...