快速排序,自己簡單理解:就是把大的放右邊,小的放左邊。(如果是從大到小排序的話)
*拿到一組數據假設int[] arr = [6,5,9,1,8,2,7] 現在我們給它從大到小排序
*把數組的第一個元素作為 基準元素(據說正規的是數組中隨機選取一個數作為基準元素)也就是6
*基準元素可以簡單理解成我們拿它作比較的元素。
*然后我們左右開弓往中間走,(記住不是"同時"開工,而是一邊完成特定操作之后,"等著"另一邊)
*第一步:從右邊往中間找小于基準數的數放到基準的位置上
*所以第一步結束后是這樣的:
*? ? ? ? ? [2,5,9,1,8,(),7] ? 注意此時我們不是把基準數放到2的位置
*第二步:第二步是基于第一步的,從左邊往右邊找大于基準數的數放到剛剛我們找到的那個 數字2所在的位置,也就是 數字9
*第二步后的結果:
*? ? ? ? ? [2,5,(),1,8,9,7]
*第三步:右邊接著往左走,往左找小于基準數的數找到數字1,然后把 數字1放到之前 數字9的位置中去
*第三步結果:[2,5,1,(),8,9,7]
*第四步:右邊的這一輪結束了,輪到左邊開始動了,左邊的往右挪一個,發現和右邊的位置“碰頭了”也就是left == right了,這時,重要的來了,我們把基準數放到兩者交匯的這個位置
*? ? ? ? ? [2,5,1,6,8,9,7],此時第一輪結束.
*
*新一輪:接著再對上一輪產生的數組做同樣的事情。
java代碼實現: