0
点赞
收藏
分享

微信扫一扫

七大常用PHP算法

E_topia 2022-07-27 阅读 153

1、冒泡排序

function bubble_sort($arr)
    {
        $n = count($arr);
        for ($i = 0; $i < $n; $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 &lt;= $mid && $j &lt;= $right) {
if ($arr[$i] &lt;= $arr[$j])
$temp[$k++] = $arr[$i++];
else
$temp[$k++] = $arr[$j++];
}
while ($i &lt;= $mid)
$temp[$k++] = $arr[$i++];
while ($j &lt;= $right)
$temp[$k++] = $arr[$j++];
for ($i = $left, $j = 0; $i &lt;= $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、二分查找-递归
```php
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 < $arr[$mid]) {
                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)
{
if ($low &gt; $high)
return false;
else {
$mid = floor(($low + $high) / 2);
if ($value == $arr[$mid]) {
return $mid;
}elseif ($value &lt; $arr[$mid]) {
return bin_search($arr, $low, $mid - 1, $value);
}else {
return bin_search($arr, $mid + 1, $high, $value);
}
}
}

5、快速排序


function quick_sort($arr)
{
$n = count($arr);
if ($n &lt;= 1)
return $arr;
$key = $arr[0];
$left_arr = array();
$right_arr = array();
for ($i = 1; $i &lt; $n; $i++) {
if ($arr[$i] &lt;= $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、选择排序
```php
function select_sort($arr)
    {
        $n = count($arr);
        for ($i = 0; $i < $n; $i++) {
            $k = $i;
            for ($j = $i + 1; $j < $n; $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 &lt; $n; $i++) {
$tmp = $arr[$i];
$j = $i - 1;
while ($arr[$j] &gt; $tmp) {
$arr[$j + 1] = $arr[$j];
$arr[$j] = $tmp;
$j--;
if ($j &lt; 0)
break;
}
}
return $arr;
}
举报

相关推荐

0 条评论