1.冒泡排序
function bubbleSort(&$arr){
$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;
}
}
}
}
2.选择排序
function selectSort(&$arr){
$temp=0;
for($i=0;$i<count($arr)-1;$i++){
$minIndex=$i; //假设$i为最小的数
for($j=$i+1;$j<count($arr);$j++){
{
if($arr[$j]<$minVal) //假设的$i不是最小
$minIndex=$j;
}
$temp=$arr[$i];
$arr[$i]=$arr[$minIndex];
$arr[$minIndex]=$temp;
}
}
}
3.插入排序
function insertSort(&$arr){
for($i=1;$i<count($arr);$i++){
$insertVal=$arr[$i];
$insertIndex=$i-1;
while($insertVal<$arr[$insertIndex]&&$insertIndex>=0){
$arr[$insertIndex+1]=$arr[$insertIndex]; //把大的数往后移动
$insertIndex--;
}
$arr[insertIndex+1]=$insertVal; //说明找到了合适的位置
}
}
从效率上看,冒泡排序<选择排序<插入排序
4.二分查找
function binarySearch(&$arr,$leftIndex,$rightIndex,$findVal){
if($leftIndex>$rightIndex){
echo "找不到该数";
return;
}
$middle=round(($leftIndex+$rightIndex)/2);
if($findVal>$arr[$middle]){ // 递归
binarySearch(&$arr;$middle+1;$rightIndex;$findVal);
}
if($findVal<$arr[$middle]){
binarySearch(&$arr;$leftIndex;$middle-1;$findVal);
}
if($findVal=$arr[$middle]){
return $middle;
}
}