PHP算法系列教程(一)-四大排序算法
冒泡
冒泡排序原理图
function bubbleSort($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 selectionSort($arr)
{
$len = count($arr);
for ($i = 0; $i < $len; $i++) {
$index = $i;
$min = $arr[$index];
for ($k = $i + 1; $k < $len; $k++) {
if ($arr[$k] < $min) {
$arr[$index] = $arr[$k];
$arr[$k] = $min;
$min = $arr[$index];
}
}
}
return $arr;
}
插入
插入排序原理图
function insertSort($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;
}
快排
快速排序原理图缺失
function quickSort($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 = quickSort($left);
$right = quickSort($right);
return array_merge($left, [$arr[0]], $right);
}
注释:原理图均来源于网络