日常の PHP 開発環境では、一般的に使用されるいくつかの PHP アルゴリズムを使用して、いくつかの問題をより効果的に解決することができます。また、いくつかのアルゴリズムを知り、これらのアルゴリズムの核となる考え方を習得することによって、PHP の問題を簡単に解決することができます。
1. バブルソート
基本的なアイデア:
2 つの隣接する値の順序が一致しないことが判明した場合、ソート対象の配列を複数回スキャンします。ソート要件と一致している ルールが一致しない場合、2 つの値が交換されます。このように、小さい(大きい)値が後ろから前に徐々に移動します。
//バブルソート
<?php function mysort($arr) { for($i = 0; $i < count($arr); $i++) { $isSort = false; for ($j=0; $j< count($arr) - $i - 1; $j++) { if($arr[$j] < $arr[$j+1]) { $isSort = true; $temp = $arr[$j]; $arr[$j] = $arr[$j+1]; $arr[$j+1] = $temp ; } } if($isSort) { break; } } return $arr; } $arr = array(3,1,2); var_dump(mysort($arr)); ?>
2. クイックソート
基本的な考え方:
配列内の要素 (ほとんどの場合最初の要素) をルーラーとして選択すると、配列を 1 回スキャンすると、それよりも小さくなります。ルーラー 要素はルーラーの前に配置され、ルーラーより大きいすべての要素はルーラーの後に配置されます。すべてのシーケンスが同じ順序になるまで、各サブシーケンスがより小さなシーケンスに分割されます。
//クイックソート
<?php //快速排序 function quick_sort($arr) { //先判断是否需要继续进行 $length = count($arr); if($length <= 1) { return $arr; } $base_num = $arr[0];//选择一个标尺 选择第一个元素 //初始化两个数组 $left_array = array();//小于标尺的 $right_array = array();//大于标尺的 for($i=1; $i<$length; $i++) { //遍历 除了标尺外的所有元素,按照大小关系放入两个数组内 if($base_num > $arr[$i]) { //放入左边数组 $left_array[] = $arr[$i]; } else { //放入右边 $right_array[] = $arr[$i]; } } //再分别对 左边 和 右边的数组进行相同的排序处理方式 //递归调用这个函数,并记录结果 $left_array = quick_sort($left_array); $right_array = quick_sort($right_array); //合并左边 标尺 右边 return array_merge($left_array, array($base_num), $right_array); } $arr = array(3,1,2); var_dump(quick_sort($arr)); ?>
3. 二分探索
基本的な考え方:
与えられた値 x に対して、シーケンスの中間位置から比較を開始すると仮定します。現在の位置の値が x に等しい場合、x が現在の位置の値より小さい場合、検索は成功します。x が現在の位置の値より大きい場合は、検索を続けます。見つかるまでのシーケンスの後半。 (データ量が多い場合に使用します)
//二分探索
<?php //二分查找 function bin_search($arr,$low,$high,$k) { if($low <= $high) { $mid = intval(($low + $high)/2); if($arr[$mid] == $k) { return $mid; } else if($k < $arr[$mid]) { return bin_search($arr,$low,$mid-1,$k); } else { return bin_search($arr,$mid+1,$high,$k); } } return -1; } $arr = array(1,2,3,4,5,6,7,8,9,10); print(bin_search($arr,0,9,3)); ?>
上記は、PHP 開発でより一般的に使用されるアルゴリズムを共有するものです。皆さんのお役に立てれば幸いです。
関連記事:
以上がPHP で一般的に使用されるアルゴリズムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。