PHP クイック ソート アルゴリズムの例 (再帰的ソートと反復的ソート)
リリース: 2016-07-25 08:51:24
-
- /**
- * 再帰的メソッドにより実装されたクイックソート
- */
- function Quicksort($seq)
- {
- $k = $seq[0];
- $x = array();
- $y = array();
- for ($i=1; $iif($seq[$i] <= $k) {
- $x[] = $seq[$i];
- } else {
- $y[] = $seq[$i];
- }
- }
- $x = クイックソート($x);
- $y = クイックソート($y);
- return array_merge($x, array($k), $ y);
- } else {
- return $seq;
- }
- }
复制代
2、迭代法:
-
- /**
- * 反復法を使用したクイックソート
- */
- function Quicksortx(&$seq)
- {
- $stack = array($seq);
- $sort = array();
- while ($stack) {
- $arr = array_pop($stack);
- if(count($arr) if(count($arr) == 1) {
- $sort[] = &$arr[0];
- }
- 続行;
- }
- $k = $arr[0];
- $x = array();
- $y = array();
- $_size = count($arr);
- for($i =1 ; $i if($arr[$i] $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;
- }
复制代
使用:
-
- /**
- *ランダム配列を生成します
- */
- for($i=0;$i$testArr[]=mt_rand(0,100);
- }
- var_dump($testArr) ;
- var_dump(quicksort($testArr));
- var_dump(quicksortx($testArr));
复制發
|
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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