PHP quick sort algorithm
Release: 2016-07-25 08:43:06
Original
986 people have browsed it
- function qsort(&$arr)
- {
- _quick_sort($arr, 0, count($arr) - 1);
- }
-
- /**
- * Quick sort using recursive algorithm.
- *
- * @param array $arr The array to be sorted
- * @param int $low The lowest sorted subsection
- * @param int $high The highest sorted field
- */
- function _quick_sort(&$arr, $low, $high)
- {
- $low_data = $arr[$low];
- $prev_low = $low;
- $prev_high = $high;
- while ($low < $high)
- {
- while ($arr[$high] >= $low_data && $low < $high) {
- $high--;
- }
- if ($low < $high) {
- $arr[$low] = $arr[$high];
- $low++;
- }
- while ($arr[$low] <= $low_data && $low < $high) {
- $low++;
- }
- if ($low < $high) {
- $arr[$high] = $arr[$low];
- $high--;
- }
- }
- $arr[$low] = $low_data;
- if ($prev_low < $low) {
- _quick_sort($arr, $prev_low, $low);
- }
- if ($low + 1 < $prev_high) {
- _quick_sort($arr, $low + 1, $prev_high);
- }
- }
-
- function quick_sort(&$arr)
- {
- $stack = array();
- array_push($stack, 0);
- array_push($stack, count($arr) -1);
- while (!empty($stack)) {
- $high = array_pop($stack);
- $low = array_pop($stack);
- $low_data = $arr[$low];
- $prev_low = $low;
- $prev_high = $high;
- while ($low < $high)
- {
- while ($arr[$high] >= $low_data && $low < $high) {
- $high--;
- }
- if ($low < $high) {
- $arr[$low] = $arr[$high];
- $low++;
- }
- while ($arr[$low] <= $low_data && $low < $high) {
- $low++;
- }
- if ($low < $high) {
- $arr[$high] = $arr[$low];
- $high--;
- }
- }
- $arr[$low] = $low_data;
- if ($prev_low < $low) {
- array_push($stack, $prev_low);
- array_push($stack, $low);
- }
- if ($low + 1 < $prev_high) {
- array_push($stack, $low + 1);
- array_push($stack, $prev_high);
- }
- }
- }
复制代码
|
php
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31