您的位置:首页 > 编程语言 > PHP开发

PHP关于数组的四种基础排序

2017-08-30 17:13 453 查看
$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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: