首頁  >  文章  >  後端開發  >  PHP的四種入門排序演算法

PHP的四種入門排序演算法

不言
不言原創
2018-04-10 17:44:331150瀏覽

本篇文章给大家分享的内容是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 class="brush:php;toolbar:false">";
 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(&#39;<pre class="brush:php;toolbar:false">&#39;,$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(&#39;<pre class="brush:php;toolbar:false">&#39;,$a);
//调用
echo "<pre class="brush:php;toolbar:false">";
print_r(quick_sort($a));

相關推薦:

PHP排序之冒泡排序

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

PHP排序演算法之堆排序詳解

以上是PHP的四種入門排序演算法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn