欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

PHP的四种入门级排序算法

程序员文章站 2022-04-22 15:42:16
...
本篇文章给大家分享的内容是PHP的四种入门级排序算法,有着一定的参考价值,有需要的朋友可以参考一下

四种入门级排序算法: 冒泡排序、选择排序、插入排序、快速排序。

$a = [5,2,4,1,6,5,3,8];
function a($a){   //冒泡排序
//$temp = 0;
    for($i=0;$i<count($a)-1;$i++){
        for($j=0;$j<count($a)-1-$i;$j++){
            if($a[$j]>$a[$j+1]){
            $temp = $a[$j];
            $a[$j] = $a[$j+1];
            $a[$j+1] = $temp;

            }
        }
        }
    print_r($a);
}
a($a);

function order($arr){      //选择排序
    //定义中间变量
    $temp = 0;
    $count = count($arr);
    for($i=0; $i<$count-1; $i++){
        //定义最小位置
        $minIndex = $i;
        for($j= $i+1; $j<$count; $j++){
            if($arr[$j] < $arr[$minIndex]){
                $minIndex = $j;
            }
        }
        if($i != $minIndex){
            $temp = $arr[$i];
            $arr[$i] = $arr[$minIndex];
            $arr[$minIndex] = $temp;

        }
    }
    return $arr;
}
echo "<pre>";
 print_r(order($a));

function swap(array &$arr,$a,$b){ //直接插入排序
    $temp = $arr[$a];
    $arr[$a] = $arr[$b];
    $arr[$b] = $temp;
}

function InsertSort(array &$arr){
    $count = count($arr);
    //数组中第一个元素作为一个已经存在的有序表
    for($i = 1;$i < $count;$i ++){
        $temp = $arr[$i];      //设置哨兵
        for($j = $i - 1;$j >= 0 && $arr[$j] > $temp;$j --){
            $arr[$j + 1] = $arr[$j];       //记录后移
        }
        $arr[$j + 1] = $temp;      //插入到正确的位置
    }
}
InsertSort($a);
var_dump('<pre>',$a);

function quick_sort($arr)//函数实现快速排序
{
    //判断参数是否是一个数组
    if(!is_array($arr)) return false;
    //递归出口:数组长度为1,直接返回数组
    $length=count($arr);
    if($length<=1) return $arr;
    //数组元素有多个,则定义两个空数组
    $left=$right=array();
    //使用for循环进行遍历,把第一个元素当做比较的对象
    for($i=1;$i<$length;$i++)
    {
        //判断当前元素的大小
        if($arr[$i]<$arr[0]){
            $left[]=$arr[$i];
        }else{
            $right[]=$arr[$i];
        }
    }
    //递归调用
    $left=quick_sort($left);
    $right=quick_sort($right);
    //将所有的结果合并
    return array_merge($left,array($arr[0]),$right);
}
var_dump('<pre>',$a);
//调用
echo "<pre>";
print_r(quick_sort($a));

相关推荐:

PHP排序之冒泡排序

PHP排序算法系列之插入排序实例分享

PHP排序算法之堆排序详解

以上就是PHP的四种入门级排序算法的详细内容,更多请关注其它相关文章!

相关标签: php 算法 排序