适用的一些算法记录
适用的一些排序算法记录
记录一些常用的算法:
NO1:冒泡排序
function maopao($arr){
$len = count($arr);
$n = $len - 1;
for($i = 0; $i < $len; $i++){
for($j = 0; $j < $n; $j++){
if($arr[$j] < $arr[$j+1]){
$temp = $arr[$j+1];
$arr[$j+1] = $arr[$j];
$arr[$j] = $temp;
}
}
}
return $arr;
}
NO2:快速排序
function quicksort($arr){
if(count($arr) <= 1) return $arr;
$key = $arr[0];
$left_arr = array();
$right_arr = array();
for($i = 0; $i < count($arr); $i++){
if($arr[$i] <= $key)
$left_arr = $arr[$i];
else
$right_arr= $arr[$i];
}
$left_arr = quicksort($left_arr);
$right_arr = quicksort($left_arr);
return array_merge($left_arr, array($key), $right_arr);
}
NO3:二分查找
function bin_find($arr, $low, $high, $k){
if($low <= $high){
$mid = intval(($low + $high)/2);
if($arr[$mid] == $k){
return $mid;
}else if($k < $arr[$mid]){
return bin_find($arr, $low, $mid-1, $k);
}else{
return bin_find($arr, $mid+1, $high, $k);
}
}
return -1;
}
NO4:顺序查找(数组内查找某个元素)
function seq_sch($arr, $n, $k){
//$arr[$n] = $k;
for($i = 0; $i < $n; $i++){
if($arr[$i] == $k){
break;
}
}
if($i < $n){
return $i;
}else{
return -1;
}
}