教程集 www.jiaochengji.com
教程集 >  脚本编程  >  php  >  正文 PHP实现几个排序和查找算法

PHP实现几个排序和查找算法

发布时间:2021-01-04   编辑:jiaochengji.com
教程集为您提供PHP实现几个排序和查找算法等资源,欢迎您收藏本站,我们将为您提供最新的PHP实现几个排序和查找算法资源
冒泡排序,快速排序,二分查找,虽然简单,但是一段时间不用的话就很容易忘记,这里是小编找来的用PHP实现代码,分享给大家一起来学习一下。

排序

冒泡排序

每一次冒出一个最大的值

function bubbleSort($arr)
{
    $count = count($arr);
    if ($count == 0) return false;

    for ($i = 0; $i < $count - 1; $i  ) {
        for ($k = 0; $k < $count - 1 - $i; $k  ) {
            if ($arr[$k] < $arr[$k   1]) {
                $tmp         = $arr[$k];
                $arr[$k]     = $arr[$k   1];
                $arr[$k   1] = $tmp;
            }
        }
    }

    return $arr;
}

快速排序

选择一个值作为基准,比他小的放在左边,比他大的放在右边,然后对左右递归,最后合并

function quickSort($arr)
{
    $count = count($arr);
    if ($count <= 1) return $arr;

    $base = $arr[0];
    $left = $right = [];
    for ($i = 1; $i < $count; $i  ) {
        if ($arr[$i] < $base) {
            $left[] = $arr[$i];
        } else {
            $right[] = $arr[$i];
        }
    }

    $left  = quickSort($left);
    $right = quickSort($right);

    return array_merge($left, [$base], $right);
}

选择排序

选择一个值假设为最小,然后依次比较,发现比他小的就互换位置

function selectSort($arr)
{
    $count = count($arr);
    if ($count <= 1) return $arr;

    for ($i = 0; $i < $count; $i  ) {
        //假设最小值位置
        $p = $i;
        //用假设的最小值$arr[$p]轮流比较,发现比他小的就互换
        for ($j = $i   1; $j < $count; $j  ) {
            if ($arr[$p] > $arr[$j]) {
                $p = $j;
            }
        }

        if ($p != $i) {
            $tmp     = $arr[$p];
            $arr[$p] = $arr[$i];
            $arr[$i] = $tmp;
        }
    }

    return $arr;
}

查找

二分查找

二分查找必须是一个排序好的数组,每次拿数组中间位置的值与目标进行比较

function binarySearch(array $arr, $target)
{
    $low = 0;
    $high = count($arr) - 1;
    while ($low <= $high) {
        $middle = floor(($high   $low) / 2);
        if ( $arr[$middle] == $target ) {
            return $middle;
        } elseif ( $arr[$middle] < $target ) {
            $low = $middle   1;
        } else {
            $high = $middle - 1;
        }
    }

    return false;
}

推荐教程:PHP视频教程

以上就是PHP实现几个排序和查找算法的详细内容,更多请关注教程集其它相关文章!

  • 本文转载于:博客园,如有侵犯,请联系jquerycn@qq.com删除
  • 您可能感兴趣的文章:
    PHP实现几个排序和查找算法
    PHP中实现冒泡排序和快速排序算法示例
    javascript常见排序算法实现代码
    PHP学习之插入排序的实现
    javascript排序算法代码解析
    php 选择排序的实现代码
    python排序算法有哪些?
    php可以写算法吗
    php 数组相关处理函数
    php基础算法有哪几种

    [关闭]
    ~ ~