php冒泡排序跟二分算法
博客专区 > tree2013 的博客 > 博客详情
php冒泡排序跟二分算法
tree2013 发表于2年前
php冒泡排序跟二分算法
  • 发表于 2年前
  • 阅读 39
  • 收藏 1
  • 点赞 1
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

PHP冒泡排序

$a=array('3','8','1','4','11','7');
print_r($a);
$len = count($a);
//从小到大
for($i=1;$i<$len;$i++) {
    for ($j = $len - 1; $j >= $i; $j--) {
        if ($a[$j] < $a[$j - 1]) {//如果是从大到小的话,只要在这里的判断改成if($b[$j]>$b[$j-1])就可以了
            $x = $a[$j];
            $a[$j] = $a[$j - 1];
            $a[$j - 1] = $x;
        }
    }
}
print_r($a);
exit;

$i=1,子循环运行$j=5,$j=4,$j=3,$j=2,$=1;第一次查找将这个数组中最小的放到第一位去

$=2,资讯还运行$j=5,$j=4;$j=3;$j=2;第二次查找这个数组中次小的放到第二去

如此循环就实现了排列,这就是冒泡排序

php二分算法

二分算法是为了实现查找某个元素在一个数组中的索引值,将数组一分为2,逐步缩小范围,最终查找到,前提是数组必须排列好。

public function search($arr,$searchval){
    $top=count($arr)-1;
    $low=0;
    while($low<=$top){
        $mid=floor(($top+$low)/2);//取整进一
        if($arr[$mid]==$searchval){
            return $mid;
        }
        elseif($arr[$mid]>$searchval){
            //如果说中间的值比搜索的值大,证明我们要到前半部分去搜索,因此top为中间的-1
            $top=$mid-1;
        }
        else{
            //如果说中间的值比搜索的值小,证明我们要到后半部分去搜索,因此low为中间的+1
            $low=$mid+1;
        }
    }
    return -1;//未查找到
}
$arr=array(1,2,3,5,9,41,50);
var_dump($this->search($arr,41));
exit;


共有 人打赏支持
粉丝 28
博文 182
码字总数 62280
×
tree2013
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: