冒泡排序
一个一个往外冒
//冒泡
function bubble($arr){
$len = count($arr);
for($i = 1; $i < $len; $i++){
for($k = 0; $k < $len - $i; $k++){
if($arr[$k] > $arr[$k+1]){
$tmp = $arr[$k+1];
$arr[$k+1] = $arr[$k];
$arr[$k] = $tmp;
}
}
}
return $arr;
}
快速排序
先拿一个为基准,然后递归左右放
//快速
function quick($arr){
$len = count($arr);
if($len == 1){return $arr;}
$left = $right = [];
for($i = 1; $i < $len; $i++){
if($arr[$i] < $arr[0]){
$left[] = $arr[$i];
}else{
$right[] = $arr[$i];
}
}
$left = quick($left);
$right = quick($right);
return array_merge($left,array($arr[0]),$right);
}
选择排序
一直找到最小的放到前面
//选择
function select($arr){
$len = count($arr);
for($i = 0; $i < $len -1; $i++){
$min = $i;
for($k = $i + 1; $k < $len; $k++){
$min = $arr[$k] < $arr[$min] ? $k : $min;
}
if($min != $i){
$tmp = $arr[$i];
$arr[$i] = $arr[$min];
$arr[$min] = $tmp;
}
}
return $arr;
}
插入排序
默认第一个已排好,后面往里面插
//插入
function insert($arr){
$len = count($arr);
for($i = 1; $i < $len; $i++){
$tmp = $arr[$i];
for($k = $i -1; $k >= 0; $k--){
if($tmp < $arr[$k]){
$arr[$k+1] = $arr[$k];
$arr[$k] = $tmp;
}else{
break;
}
}
}
return $arr;
}