排序:
冒泡排序:
$arr = array(0,5,-1,90,-100,34.5,697,-39);
//这是一个中间变量
$temp = 0;
//外层循环
for($i=0;$i<count($arr)-1;$i++)
{
for($j=0;$j<count($arr)-1-$i;$j++)
{
//说明前面的数比后面的数大,就要交换
if($arr[$j]>$arr[$j+1]){
$temp = $arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$temp;
}
}
}
var_dump($arr);
选择排序:
function selectSort(&$arr)
{
$temp = 0;
for($i=0;$i<count($arr)-1;$i++){
//假设 $i 就是最小的数
$minVal = $arr[$i];
//记录我认为的最小数的下标
$minIndex = $i;
for($j=$i+1;$j<count($arr);$j++){
//说明我们认为的最小值,不是最小
if($minVal>$arr[$j]){
$minVal = $arr[$j];
$minIndex = $j;
}
}
//最后交换
$temp = $arr[$i];
$arr[$i] = $arr[$minIndex];
$arr[$minIndex] = $temp;
}
}
$arr = array(0,5,-1,32,15,20,-9);
selectSort($arr);
var_dump($arr);
插入排序:
//插入排序法(小到大)
function insertSort(&$arr)
{
//先默认下标为0的这个数已经是有序的
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--;
}
//插入(这是就给$insertVal找到合适位置)
$arr[$insertIndex+1] = $insertVal;
}
}
$arr = array(0,5,-1,32,15,20,-9);
insertSort($arr);
var_dump($arr);
效率:
冒泡<选择<插入