修炼秘籍(相当于葵花宝典了)
冒泡排序
$arr=array(22,43,4,63,21,66,22,38,36,76,49);
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;
}
选择排序
$arr=array(22,43,4,63,21,66,22,38,36,76,49);
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;
}
插入排序
$arr=array(22,43,4,62,21,66,22,78,36,76,39);
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;
}
快速排序
$arr=array(22,43,4,63,21,66,22,38,36,76,49);
function quickSort($arr)
{
//判断数组是否适合排序
$length = count($arr);
if ($length <= 1) {
return $arr;
}
//选择第一个元素作为基准
$base_num = $arr[0];
//遍历除了标尺外的所有元素,
//按照大小关系放入两个数组内
//初始化两个数组
$left_array = array();
//小于基准的
$right_array = array();
//大于基准的
for ($i = 1; $i < $length; $i++) {
if ($base_num > $arr[$i]) {
//放入左边数组
$left_array[] = $arr[$i];
} else {
//放入右边数组
$right_array[] = $arr[$i];
}
}
//再分别对左边和右边的数组进行相同的
//序处理方式递归调用这个函数
$left_array = quickSort($left_array);
$right_array = quickSort($right_array);
//然后合并数组
return array_merge($left_array,array($base_num),$right_array);
}