以下では、最も一般的なアルゴリズムのいくつかと、それらを PHP で実装する方法を共有します。
1. バブルソート
- function bubble_sort($arr) {
- $n=count($arr);
- for($i=0;$i<$n-1;$i++){
- for ($j=$i+1;$j<$n;$j++) {
- if($arr[$j]<$arr[$i]) {
- $temp=$arr[$i]; $arr[$i]=$arr[$j];
- $arr[$j]=$temp;
- }
- }
- }
- return $arr;
- }
コードをコピー
2. マージソート function Merge(&$arr, $left, $mid, $right) {- $i = $left;
- $j = $mid + 1;
- $k = 0;
- $temp = array();
- while ($i <= $mid && $j <= $right)
- {
- if ($arr[$i] <= $arr[$j])
- $ temp[$k++] = $arr[$i++];
- else
- $temp[$k++] = $arr[$j++];
- }
- while ($i <= $mid)
- $temp[$k++] = $arr[$i++];
- while ($j <= $right)
- $temp[$k++] = $arr[$j++];
- for ($i = $left, $j = 0; $i <= $right; $i++, $j++)
- $arr[$i] = $temp[$j];
- }
- function MergeSort(&$arr, $left, $right)
- {
- if ($ left < $right)
- {
- $mid = Floor(($left + $right) / 2);
- MergeSort($arr, $left, $mid);
- MergeSort($arr, $mid + 1, $ right);
- Merge($arr, $left, $mid, $right);
- }
- }
コードをコピー
3. 二分探索再帰 function bin_search($arr,$low,$high,$value) {- if($low>$high)
- return false;
- else {
- $mid=floor (($low+$high)/2);
- if($value==$arr[$mid])
- return $mid;
- elseif($value return bin_search($arr, $low,$mid-1,$value);
- else
- return bin_search($arr,$mid+1,$high,$value);
- }
- }
-
コードをコピー
4. 二分探索 - 非再帰
function bin_search($arr,$low,$high,$value) {- while($low<=$high) {
- $mid=floor(($ low+ $high)/2);
- if($value==$arr[$mid])
- return $mid;
- elseif($value $high=$mid-1;
- else
- $low=$mid+1;
- }
- return false;
- }
-
コードをコピー
5. クイックソート
function Quick_sort($arr) {- $n=count($arr);
- if($n<=1)
- return $arr;
- $key=$arr[0 ];
- $left_arr=array();
- $right_arr=array();
- for($i=1;$i<$n;$i++) {
- if($arr[$i]<=$key) )
- $left_arr[]=$arr[$i];
- else
- $right_arr[]=$arr[$i];
- }
- $left_arr=quick_sort($left_arr);
- $right_arr=quick_sort($right_arr) ;
- return array_merge($left_arr,array($key),$right_arr);
- }
-
コードをコピー
6、选择排序
- function select_sort($arr) {
- $n=count($arr);
- for($i=0;$i<$n;$i++) {
- $k= $i;
- for($j=$i+1;$j if($arr[$j]<$arr[$k])
- $k=$j;
- }
- if($k!=$i) {
- $temp=$arr[$i];
- $arr[$i]=$arr[$k];
- $arr[$k]=$temp;
- }
- }
- return $arr;
- }
复制代
7、插入排序
- function insertSort($arr) {
- $n=count($arr);
- for($i=1;$i<$n;$i++) {
- $tmp= $arr[$i];
- $j=$i-1;
- while($arr[$j]>$tmp) {
- $arr[$j+1]=$arr[$j];
- $ arr[$j]=$tmp;
- $j--;
- if($j Break;
- }
- }
- return $arr;
- }
复制發
|