快速排序,下面的代碼親測,能夠運行,結果也正確,但是我感覺怪怪的!想問一下紅色框裡的代碼是不是有問題,希望解釋一下
沒問題呀,這是快速排序的一種版本,是標准程序。
你也可以把array[low] = array[high]
改成類似swap(array[low],array[high])
這樣的語句,更符合快速排序的交換思想(把小於index的交換到前面,把大於index的交換到後面)。
不過你會發現,如果這麼修改,在(修改後的)第一個紅框執行的時候,array[low]
始終等於array[index]
,而(修改後的)第二個紅框執行的時候,array[high]
始終等於array[index]
,這就是為什麼源碼中不需要采用交換的原因(交換是3次賦值,比較浪費時間)。