快速排序筆記

聲明:“填坑法”的思想轉(zhuǎn)自菜鳥教程。最后所給代碼與菜鳥教程原代碼并不完全一致。
快排的思想是:
????選擇序列一個基數(shù),把當前序列分成兩部分,一部分小于基數(shù),一部分大于基數(shù)。等于基數(shù)的數(shù)可以放在任意一部分。 然后遞歸地用快排進行排序,遞歸邊界是數(shù)組長度為1。
這是思想,但是實現(xiàn)可以不那么死板,用“填坑法”會比較好理解:
定義雙指針分別指向兩端
選擇右指針的數(shù)作為基數(shù)(同時相當于最右邊挖了一個坑)
從左指針向右找小于基數(shù)的,填到右指針坑里(但這時左指針的位置也出現(xiàn)了一個新坑)
再從右指針向左找大于基數(shù)的,填到左指針坑里(這時右指針的位置變成了坑)
不斷重復(fù)3 4步,直到左指針等于右指針
最后左指針(右指針)的位置有一個坑,把基數(shù)填到這個坑里
遞歸調(diào)用快排
標簽: