一、冒泡排序
<?php
/**
* 冒泡排序
* @param $arr
* @return mixed
*/
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;
}
二、选择排序
<?php
/**
* 选择排序
* @param $arr
* @return mixed
*/
function selectSort($arr)
{
$len=count($arr);
for($i=0; $i<$len-1; $i++)
{
$p = $i;
for($j=$i+1; $j<$len; $j++)
{
if($arr[$p] > $arr[$j])
{
$p = $j;
}
}
if($p != $i)
{
$tmp = $arr[$p];
$arr[$p] = $arr[$i];
$arr[$i] = $tmp;
}
}
return $arr;
}
三、插入排序
<?php
/**
* 插入排序
* @param $arr
* @return mixed
*/
function insertSort($arr)
{
$len=count($arr);
for($i=1; $i<$len; $i++)
{
$tmp = $arr[$i];
for($j=$i-1;$j>=0;$j--)
{
if($tmp < $arr[$j])
{
$arr[$j+1] = $arr[$j];
$arr[$j] = $tmp;
} else {
break;
}
}
}
return $arr;
}
四、快速排序
<?php
/**
* 快速排序
* @param $arr
* @return array
*/
function quickSort($arr) {
$len = count($arr);
if($len <= 1)
{
return $arr;
}
$base_num = $arr[0];
$left_array = [];
$right_array = [];
for($i=1; $i<$len; $i++)
{
if($base_num > $arr[$i])
{
$left_array[] = $arr[$i];
} else {
$right_array[] = $arr[$i];
}
}
$left_array = self::quickSort($left_array);
$right_array = self::quickSort($right_array);
return array_merge($left_array, array($base_num), $right_array);
}