冒泡算法
冒泡算法的思路是相邻的元素比较,极值出现在数组右端,即每一次循环都可选出极值.function bubble($arr){ for($i=0,$len=count($arr);$i<$len-1;++$i){ for($j=0;$j<$len-1-$i;++$j){ if($arr[$j]>$arr[$j+1]){ $tmp=$arr[$j]; $arr[$j]=$arr[$j+1]; $arr[$j+1]=$tmp; } } } return $arr; }123456789101112
选择排序
选择排序是依次用排序好的元素和剩下的元素比较,最值出现在数组左侧.function selection($arr){ for($i=0,$len=count($arr);$i<$len-1;++$i){ for($j=$i+1;$j<$len-1;++$j){ if($arr[$i]>$arr[$j]){ $tmp=$arr[$i]; $arr[$i]=$arr[$j]; $arr[$j]=$tmp; } } } return $arr; }123456789101112 二分法 前提是对一个有序数组进行操作,找出所要元素对应的索引.
function harfsort($arr,$target){ $min=0; $max=count($arr)-1; $mid=(int)(($max-$min)/2); while(true){ if($target>$mid){ $min=$mid+1; }else if($target<$mid){ $max=$mid-1; }else{ return $mid; } if($min>$max){ reutrn -1; } $mid=(int)(($max-$min)/2); } }
123456789101112131415161718