PHPクイックソートアルゴリズム
リリース: 2016-07-25 08:43:06
- function qsort(&$arr)
- {
- _quick_sort($arr, 0, count($arr) - 1);
- }
-
- /**
- * 再帰アルゴリズムを使用したクイックソート。
- *
- * @param array $arr ソートされる配列
- * @param int $low ソート済みの最も低いサブセクション
- * @param int $high ソート済みの最も高いフィールド
- */
- 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 array_push($stack, $low + 1) );
- array_push($stack, $prev_high);
- }
- }
- }
复制代
|
php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
-
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