ホームページ  >  記事  >  バックエンド開発  >  PHP_PHP チュートリアルの 2 つのクイック ソート アルゴリズムの例

PHP_PHP チュートリアルの 2 つのクイック ソート アルゴリズムの例

WBOY
WBOYオリジナル
2016-07-13 10:06:29873ブラウズ

PHPの2つのクイックソートアルゴリズムの例

この記事では、主にPHPの2つのクイックソートアルゴリズムの例を紹介します。この記事では、それぞれ再帰的方法と反復的方法を使用して、実装コードを直接示します。

PHP のような Web アプリケーション開発では、ソートの重要性をあまり強調しません。PHP 自体には、sort() などの強力なソート関数がすでに備わっているためです。しかし、いくつかの重要な場面、たとえば、高い同時実行性では、この場合、ソートアルゴリズムの影響は無視できないと思います。そこで、ここでは再帰的並べ替えと反復的並べ替えを紹介します。

再帰的メソッド:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

/**

* 再帰的メソッドにより実装されたクイックソート

*/

関数クイックソート($seq)

{

$k = $seq[0];

$x = 配列();

$y = 配列();

for($i=1; $i

if($seq[$i]

$x[] = $seq[$i];

} 他 {

$y[] = $seq[$i];

}

}

$x = クイックソート($x);

$y = クイックソート($y);

return array_merge($x, array($k), $y);

} 他 {

$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

/**

* 反復法を使用したクイックソート

*/

関数クイックソートx(&$seq)

{

$スタック = 配列($seq);

$sort = array();

while ($stack) {

$arr = array_pop($stack);

if(count($arr)

if(count($arr) == 1) {

$sort[] = &$arr[0];

}

続き;

}

$k = $arr[0];

$x = 配列();

$y = 配列();

$_size = count($arr);

for($i =1 ;$i

if($arr[$i]

$x[] = &$arr[$i];

} 他 {

$y[] = &$arr[$i];

}

}

!empty($y) && array_push($stack, $y);

array_push($stack, array($arr[0]));

!empty($x) && array_push($stack, $x);

}

$sort を返す;

}

使用:

?

1

2

3

4

5

6

7

8

9

10

/**

*ランダム配列を生成します

*/

for($i=0;$i

$testArr[]=mt_rand(0,100);

}

var_dump($testArr);

var_dump(クイックソート($testArr));

var_dump(quicksortx($testArr));

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/958570.html技術記事 PHP の 2 つのクイック ソート アルゴリズムの例 この記事では、主に PHP の 2 つのクイック ソート アルゴリズムの例を紹介します。これは、それぞれ再帰的メソッドと反復メソッドを使用して実装されます。 .
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。