ホームページ  >  記事  >  バックエンド開発  >  PHP は一般的な検索および並べ替えアルゴリズムを実装します

PHP は一般的な検索および並べ替えアルゴリズムを実装します

WBOY
WBOYオリジナル
2016-07-25 09:12:37983ブラウズ

以下では、最も一般的なアルゴリズムのいくつかと、それらを PHP で実装する方法を共有します。

1. バブルソート

  1. function bubble_sort($arr) {
  2. $n=count($arr);
  3. for($i=0;$i<$n-1;$i++){
  4. for ($j=$i+1;$j<$n;$j++) {
  5. if($arr[$j]<$arr[$i]) {
  6. $temp=$arr[$i]; $arr[$i]=$arr[$j];
  7. $arr[$j]=$temp;
  8. }
  9. }
  10. }
  11. return $arr;
  12. }
コードをコピー

2. マージソート

    function Merge(&$arr, $left, $mid, $right) {
  1. $i = $left;
  2. $j = $mid + 1;
  3. $k = 0;
  4. $temp = array();
  5. while ($i <= $mid && $j <= $right)
  6. {
  7. if ($arr[$i] <= $arr[$j])
  8. $ temp[$k++] = $arr[$i++];
  9. else
  10. $temp[$k++] = $arr[$j++];
  11. }
  12. while ($i <= $mid)
  13. $temp[$k++] = $arr[$i++];
  14. while ($j <= $right)
  15. $temp[$k++] = $arr[$j++];
  16. for ($i = $left, $j = 0; $i <= $right; $i++, $j++)
  17. $arr[$i] = $temp[$j];
  18. }
  19. function MergeSort(&$arr, $left, $right)
  20. {
  21. if ($ left < $right)
  22. {
  23. $mid = Floor(($left + $right) / 2);
  24. MergeSort($arr, $left, $mid);
  25. MergeSort($arr, $mid + 1, $ right);
  26. Merge($arr, $left, $mid, $right);
  27. }
  28. }
コードをコピー

3. 二分探索再帰

    function bin_search($arr,$low,$high,$value) {
  1. if($low>$high)
  2. return false;
  3. else {
  4. $mid=floor (($low+$high)/2);
  5. if($value==$arr[$mid])
  6. return $mid;
  7. elseif($value return bin_search($arr, $low,$mid-1,$value);
  8. else
  9. return bin_search($arr,$mid+1,$high,$value);
  10. }
  11. }
コードをコピー

4. 二分探索 - 非再帰

    function bin_search($arr,$low,$high,$value) {
  1. while($low<=$high) {
  2. $mid=floor(($ low+ $high)/2);
  3. if($value==$arr[$mid])
  4. return $mid;
  5. elseif($value $high=$mid-1;
  6. else
  7. $low=$mid+1;
  8. }
  9. return false;
  10. }
コードをコピー

5. クイックソート

    function Quick_sort($arr) {
  1. $n=count($arr);
  2. if($n<=1)
  3. return $arr;
  4. $key=$arr[0 ];
  5. $left_arr=array();
  6. $right_arr=array();
  7. for($i=1;$i<$n;$i++) {
  8. if($arr[$i]<=$key) )
  9. $left_arr[]=$arr[$i];
  10. else
  11. $right_arr[]=$arr[$i];
  12. }
  13. $left_arr=quick_sort($left_arr);
  14. $right_arr=quick_sort($right_arr) ;
  15. return array_merge($left_arr,array($key),$right_arr);
  16. }
コードをコピー

6、选择排序

  1. function select_sort($arr) {
  2. $n=count($arr);
  3. for($i=0;$i<$n;$i++) {
  4. $k= $i;
  5. for($j=$i+1;$j if($arr[$j]<$arr[$k])
  6. $k=$j;
  7. }
  8. if($k!=$i) {
  9. $temp=$arr[$i];
  10. $arr[$i]=$arr[$k];
  11. $arr[$k]=$temp;
  12. }
  13. }
  14. return $arr;
  15. }
复制代

7、插入排序

  1. function insertSort($arr) {
  2. $n=count($arr);
  3. for($i=1;$i<$n;$i++) {
  4. $tmp= $arr[$i];
  5. $j=$i-1;
  6. while($arr[$j]>$tmp) {
  7. $arr[$j+1]=$arr[$j];
  8. $ arr[$j]=$tmp;
  9. $j--;
  10. if($j Break;
  11. }
  12. }
  13. return $arr;
  14. }
复制發


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。