基础排序,查找算法(PHP)

排序

1.冒泡排序

<?php
$arr = [12,7,6,8,9,8,13,23];
$count = count($arr);
for($i=0;$i<$count-1;$i++)
{
    for($j=0;$j<$count-$i-1;$j++)
    {
        if($arr[$j]>=$arr[$j+1])
        {
            $t = $arr[$j+1];
            $arr[$j+1] = $arr[$j];
            $arr[$j] = $t;
        }
    }
}

var_dump($arr);
?>

 


查找

1.二分查找

<?php
$arr = [1,5,6,9,12,54,67];//须为递增数组
$i = 0;

function binSearch($arr,$value)
{
    $count = count($arr);
    $lower = 0;
    $high = $count - 1;
    global $i;
    
    while($lower<$high)
    {
        $i++;
        if($arr[$lower] == $value)
        {
            return $lower;
        }
        
        if($arr[$high] == $value)
        {
            return $high;
        }
        
        $middle = intval(($lower + $high)/2);
    
        
        if($arr[$middle] == $value)
        {
            return $middle;
        }
        
        if($value>$arr[$middle])
        {
            $lower = $middle+1;
        }
        
        
        if($value<$arr[$middle])
        {
            $high = $middle-1;
        }
    }
    
    return -1;
}

$pos = binSearch($arr,12);
echo $pos;
echo $i;

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值