首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 四大經典排序演算法實作:冒泡、選擇、插入、快速排序

     編輯:PHP 綜合知識

陣列 [1,43,54,62,21,66,32,78,36,76,39] 升序排序四種寫法:

1. 冒泡排序

function bubbleSort($arr) {
    $n=count($arr);
    for($i=1;$i<$n;$i++)
        for($k=0;$k<$n-$i;$k++)
            if($arr[$k]>$arr[$k+1]) [$arr[$k],$arr[$k+1]] = [$arr[$k+1],$arr[$k]];
    return $arr;
}

2. 選擇排序

function selectSort($arr) {
    $n=count($arr);
    for($i=0;$i<$n-1;$i++) {
        $p=$i;
        for($j=$i+1;$j<$n;$j++) if($arr[$p]>$arr[$j]) $p=$j;
        if($p!=$i) [$arr[$i],$arr[$p]] = [$arr[$p],$arr[$i]];
    }
    return $arr;
}

3. 插入排序

function insertSort($arr) {
    $n=count($arr);
    for($i=1;$i<$n;$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. 快速排序

function quickSort($arr) {
    if(count($arr)<=1) return $arr;
    $base=$arr[0]; $left=$right=[];
    for($i=1;$i$arr[$i] ? $left[]=$arr[$i] : $right[]=$arr[$i];
    return array_merge(quickSort($left), [$base], quickSort($right));
}

時間複雜度:冒泡/選擇/插入 O(n²),快速排序平均 O(n log n)。實務上直接用 sort()/usort()。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved