$arr = [4,0,5,-2,1];
//冒泡排序-----------begin--------------------------------
function BubbleSort($arr){
for($i=1;$i<count($arr);$i++){
for($j=0;$j<count($arr)-$i;$j++){
//倒序排列
if($arr[$j]>$arr[$j+1]){
$temp = $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $temp;
}
}
}
return $arr;
}
echo "<pre>";
echo "<br/>此方法为冒泡排序:";
print_r(BubbleSort($arr));die;
//冒泡排序----------------end----------------------------------------
//快速排序---------------begin---------------------------------
function Fast($arr){
if(count($arr)<=1){
return $arr;
}
$temp = $arr[0];
$left = $right = [];
for($i=1;$i<count($arr);$i++){
if($arr[$i]>$temp){
$left[] = $arr[$i];
}else{
$right[] = $arr[$i];
}
}
// return [$left,$right];
$left = Fast($left);
$right = Fast($right);
// return $left;
// return [$left,$right];
return array_merge($left,[$temp],$right);
}
echo "<pre>";
//echo "<br/>此方法为快速排序:";
//print_r(Fast($arr));
//快速排序---------------end---------------------------------
//选择排序----------------begin-----------------------
//选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
function SelectSort($arr){
for($i=0;$i<count($arr);$i++){
//假设一个最小值
$min = $i;
for($j=0;$j<count($arr);$j++){
if($arr[$min]<$arr[$j]){
$temp = $arr[$j];
$arr[$j] = $arr[$min];
$arr[$min] = $temp;
// list($arr[$min],$arr[$j]) = [$arr[$j],$arr[$min]];
}
}
}
return $arr;
}
echo "<pre>";
echo "<br/>此方法为选择排序:";
print_r(SelectSort($arr));
//插入排序法由小到大排列(下标是0的默认是有序数组,然后后面的一次往有序数组中放,依次查询)
$data=array(-60,-2,0,6,7,-50,60);
// 默认下标为0的一个数是有序的
for($i=1;$i<count($data);$i++){
//假设插入数的一个下标为$i
$addval=$data[$i];
$up=$i-1;
//现在是前面的大于了后面的
while($up>=0 && $data[$up]>$addval){
//把前面的那个数往后移一位
$data[$up+1]=$data[$up];
//如果移一位后它还是后边的大就$up--一个一个的找直到找到为止
$up--;//
}
//把找到的位置给你假设的那个数
$data[$up+1]=$addval;
}
//print_r($data);