作为程序员一定要保持良好的睡眠,才能好编程

php四大算法|冒泡排序|快速排序|二分查找

发布时间:2016-11-01

php中有四大算法:


这种算法现在虽然用的不是太多,但面试的时候,很多人都会去问

什么叫冒泡排序法?

怎么写,写一段吧


这就是冒泡排序法,按照从大到小或从小到大的顺序进行排列。


冒泡排序法:

1、首先要知道循环的次数

2、双层循环

3、是从大到小还是从小到大 (决定压入数组的顺序)


每当两个相邻的数进行比较后,发现他们的排序与排序规则不一样的时候,

则两个数进行位置互换。


//lt 从大到小

//gt从小到大


1、冒泡排序法

$arr=array(3,8,4,6,5,7,9);
    $arr=px($arr,"lt");
    function px($arr,$dig="gt"){
        $len=sizeof($arr);
        for($i=1;$i<$len;$i++){
            for($j=0;$j<$len-$i;$j++){
                if($dig=="gt"){
                    if($arr[$j]>$arr[$j+1]){
                        $tmp=$arr[$j+1];
                        $arr[$j+1]=$arr[$j];
                        $arr[$j]=$tmp;
                    }
                }else if($dig=="lt"){
                    if($arr[$j]<$arr[$j+1]){
                        $tmp=$arr[$j+1];
                        $arr[$j+1]=$arr[$j];
                        $arr[$j]=$tmp;
                    }
                }
                
            }
        }
        return $arr;
    }    
    echo "<pre>";
    print_r($arr);
    echo "</pre>";


php冒泡排序有多种写法:


第一种:

function arrSort($arr) {

	for ($i = 1, $len = count($arr); $i < $len; $i++) {
		for ($j = 0; $j < $len - $i; $j++) {

			if ($arr[$j] < $arr[$j + 1]) {
				$temp = $arr[$j + 1];
				$arr[$j + 1] = $arr[$j];
				$arr[$j] = $temp;
			}

		}
	}
	return $arr;

}


2018-11-24 



第二种:

function arrSort($arr) {
$num = 0;
for ($i = 1; $i < count($arr); $i++) {
for ($j = 0; $j < (count($arr) - $i); $j++) {
if ($arr[$j] > $arr[$j + 1]) {
$temp = $arr[$j];
$arr[$j] = $arr[$j + 1];
$arr[$j + 1] = $temp;
}
$num++;
}
}
echo $num;
return $arr;
}


区别在于声明变量处,第一种方法声明了一个length


这种冒泡是精简的算法,最少的排序次数