排序算法还是挺重要的,除了冒泡排序外我觉得还应该掌握至少2种排序算法,从难易程度看选择排序和插入排序应该不错,至少面对常规面试笔试也足够了,下面我把这两种排序算法的代码贴出来,希望多少可以帮助到菜鸟们吧。
1.选择排序
<?php
$arr=array(5,-1,8,6,9,30);
for($i=0;$i<count($arr);$i++){
$temp=0;
//假设当前的数最小
$minIndex=$i;
$minVal=$arr[$i];
for($j=$i+1;$j<count($arr);$j++){
//如果有更小的数,则和之前的数交换
if($arr[$j]<$minVal){
$minIndex=$j;
$minVal=$arr[$j];
}
}
$temp=$arr[$i];
$arr[$i]=$minVal;
$arr[$minIndex]=$temp;
}
for($f=0;$f<count($arr);$f++){
echo $arr[$f]."<br/>";
}
?>
2.插入排序
这种算法的难点在于对排序过程的理解上,在实在理解不了的情况下,可以记忆一下代码
<?php
$arr=array(5,-1,8,6,9,30);
for($i=1;$i<count($arr);$i++){
$insertVal=$arr[$i];
//要插入的位置
$insertIndex=$i-1;
while($insertIndex>=0&&$insertVal<$arr[$insertIndex]){
$arr[$insertIndex+1]=$arr[$insertIndex];
$insertIndex--;
}
//如果当前位置不等于要插入的位置则交换反之则不用交换
if($i!=$insertIndex+1){
$arr[$insertIndex+1]=$insertVal;
}
}
for($f=0;$f<count($arr);$f++){
echo $arr[$f]."<br/>";
}
?>
下面是运行效果