This article mainly introduces examples of two quick sorting algorithms in PHP. This article directly gives the implementation code, using the recursive method and the iterative method respectively. Implementation, friends who need it can refer to it
Although in web application development like PHP, we don’t emphasize the importance of sorting too much, because PHP itself already comes with powerful sorting functions such as sort(), but in some important occasions, such as some high-level In the case of concurrency, I think the impact of the sorting algorithm cannot be ignored. So here we introduce recursive sorting and iterative sorting.
Recursive method:
?
3 4
5
6
|
/** * Quick sort implemented by recursive method */ function quicksort($seq) { $k = $seq[0]; $x = array(); $y = array(); for($i=1; $i< $_size; $i++) { if($seq[$i] <= $k) { $x[] = $seq[$i]; } else { $y[] = $seq[$i]; } } $x = quicksort($x); $y = quicksort($y); return array_merge($x, array($k), $y); } else { return $seq; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | /** * Quick sort using iterative method */ function quicksortx(&$seq) { $stack = array($seq); $sort = array(); while ($stack) { $arr = array_pop($stack); if(count($arr) <= 1) { if(count($arr) == 1) { $sort[] = &$arr[0]; } continue; } $k = $arr[0]; $x = array(); $y = array(); $_size = count($arr); for($i =1 ;$i < $_size; $i++) { if($arr[$i] <= $k) { $x[] = &$arr[$i]; } else { $y[] = &$arr[$i]; } } !empty($y) && array_push($stack, $y); array_push($stack, array($arr[0])); !empty($x) && array_push($stack, $x); } return $sort; } |
使用:
?
|
/**
*Generate a random array |