您的位置 首页 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实现几个排序和查找算法的详细内容,更多请关注求知技术网其它相关文章!

文章来源:智云一二三科技

文章标题:PHP实现几个排序和查找算法

文章地址:https://www.zhihuclub.com/5669.shtml

关于作者: 智云科技

热门文章

网站地图