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
这种冒泡是精简的算法,最少的排序次数