php冒泡排序跟二分算法

PHP冒泡排序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;第二次查找這個數組中次小的放到第二去數組

如此循環就實現了排列,這就是冒泡排序this

php二分算法code

二分算法是爲了實現查找某個元素在一個數組中的索引值,將數組一分爲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;
相關文章
相關標籤/搜索