1、插入排序
function insert_sort($arr){ $count = count($arr); for($i=1; $i<$count; $i++){ $tmp = $arr[$i]; $j = $i - 1; while($arr[$j] > $tmp){ $arr[$j+1] = $arr[$j]; $arr[$j] = $tmp; } } return $arr; } var_dump(insert_sort(array(34,12,54,44,65))); 2、冒泡排序function bubble_sort($array){ if (empty($array)){ return 'no array data'; } $count = count($array); if ($count == 1){ return $array; } for ($i=0;$i<$count-1;$i++){ for ($j=$count-1;$j>$i;$j--){ if ($array[$j] > $array[$j-1]){ $temp = $array[$j-1]; $array[$j-1] = $array[$j]; $array[$j] = $temp; } } } return $array; } $array = array(23,43,12,32,9,76,2,19); var_dump(bubble_sort($array));
3、快速排序function quickSort($arr){ $len = count($arr); if($len <= 1) { return $arr; } $key = $arr[0]; $left_arr = array(); $right_arr = array(); for($i=1; $i<$len; $i++){ if($arr[$i] <= $key){ $left_arr[] = $arr[$i]; } else { $right_arr[] = $arr[$i]; } } $left_arr = quickSort($left_arr); $right_arr = quickSort($right_arr); return array_merge($left_arr, array($key), $right_arr); } 4、二分算法/** * @param $arr 用来查找的数组 * @param $val 需要查找的值 * @param $start 起始位置 * @param $end 结束位置 * @return float|int|void 数组中位置 */ function twosearch($arr,$val,$start,$end){ if ($start > $end){ echo "can't search"; return; } $middle=round(($start+$end)/2); if($arr[$middle]>$val){ twosearchmethod($arr, $val, $start, $middle-1); }elseif($arr[$middle]<$val){ twosearchmethod($arr, $val, $middle+1, $end); }else{ return $middle; } return -1; } var_dump( twosearch(array(3,4,5,6,7),5,0,4));