修煉內功---資料結構與演算法12---快速排序
阿新 • • 發佈:2018-12-27
https://blog.csdn.net/adusts/article/details/80882649
這個部落格寫的很好
<?php function quick_sort($nums) { if (count($nums) <= 1) { return $nums; } quick_sort_c($nums, 0, count($nums) - 1); return $nums; } function quick_sort_c(&$nums, $p, $r) { if ($p >= $r) { return; } $q = partition($nums, $p, $r); quick_sort_c($nums, $p, $q - 1); quick_sort_c($nums, $q + 1, $r); } // 尋找pivot function partition(&$nums, $p, $r) { $pivot = $nums[$r]; $i = $p; for ($j = $p + 1; $j < $r; $j++) { // 原理:將比$pivot小的數丟到[$p...$i-1]中,剩下的[$i..$j]區間都是比$pivot大的 if ($nums[$j] < $pivot) { $temp = $nums[$i]; $nums[$i] = $nums[$j]; $nums[$j] = $temp; $i++; } } // 最後將 $pivot 放到中間,並返回 $i $temp = $nums[$i]; $nums[$i] = $pivot; $nums[$r] = $temp; return $i; } $nums = [4, 5, 6, 3, 2, 1]; $nums = quick_sort($nums); print_r($nums);