加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

PHP 实现四种基本排序算法

发布时间:2020-05-25 07:12:01 所属栏目:PHP 来源:互联网
导读:PHP 实现四种基本排序算法

下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。

脚本之家小编现在分享给大家,也给大家做个参考。

1.冒泡排序

$arr=array(1,43,54,62,21,66,32,78,36,76,39);
functionbubbleSort($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;
}

2.选择排序

functionselectSort($arr){
//双重循环完成,外层控制轮数,内层控制比较次数
$len=count($arr);
for($i=0;$i<$len-1;$i++){
//先假设最小的值的位置
$p=$i;

for($j=$i+1;$j<$len;$j++){
//$arr[$p]是当前已知的最小值
if($arr[$p]>$arr[$j]){
 //比较,发现更小的,记录下最小值的位置;并且在下次比较时采用已知的最小值进行比较。
$p=$j;
}
}
//已经确定了当前的最小值的位置,保存到$p中。如果发现最小值的位置与当前假设的位置$i不同,则位置互换即可。
if($p!=$i){
$tmp=$arr[$p];
$arr[$p]=$arr[$i];
$arr[$i]=$tmp;
}
}
//返回最终结果
return$arr;
}

3.插入排序

functioninsertSort($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;
}

4.快速排序

functionquickSort($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=quick_sort($left_array);
$right_array=quick_sort($right_array);
//合并
returnarray_merge($left_array,array($base_num),$right_array);
}

以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读