首頁  >  文章  >  後端開發  >  php如何實作排序演算法

php如何實作排序演算法

coldplay.xixi
coldplay.xixi原創
2020-10-06 10:33:065453瀏覽

php實作排序演算法的方法:1、冒泡排序,兩兩相比,每循環一輪就不用再比較最後一個元素;2、選擇排序,選定一個為基本值,剩下的和這個比較,再調換位置。

php如何實作排序演算法

php實作排序演算法的方法:

1、冒泡排序:

兩兩相比,每循環一輪就不用再比較最後一個元素了,因為最後一個元素已經是最大或最小。

function maopaoSort ($list)
{
    $len = count($list);
    for ($i = 0; $i < $len - 1; $i++) {
        for ($j = 0; $j < $len - $i - 1; $j++) {
            if ($list[$j] > $list[$j + 1]) {
                $tmp = $list[$j];
                $list[$j] = $list[$j + 1];
                $list[$j + 1] = $tmp;
            }
        }
    }
    return $list;
}

2、選擇排序:

選定一個作為基本值,剩下的和這個比較,然後調換位置。

function xuanzeSort ($list)
{
    $len = count($list);
    for ($i = 0; $i < $len - 1; $i++) {
        $pos = $i;
        for ($j = $i + 1; $j < $len; $j++) {
            if ($list[$pos] > $list[$j]) {
                $pos = $j;
            }
        }
        if ($pos != $i) {
            $tmp = $list[$pos];
            $list[$pos] = $list[$i];
            $list[$i] = $tmp;
        }
    }
    return $list;
}

3、快速排序:

原理就是拿出一個標尺值,然後分成左右兩個數組,分別比較

function kuaisuSort ($list)
{
    $len = count($list);
    if ($len <= 1) {//递归出口
        return $list;
    }
    $base = $list[0];//选择一个比较值
    $leftList = $rightList = [];
    for ($i = 1; $i < $len; $i++) {
        if ($base > $list[$i]) {
            $leftList[] = $list[$i];
        } else {
            $rightList[] = $list[$i];
        }
    }
    //递归分别再处理左右两边的数组
    $leftList = kuaisuSort($leftList);
    $rightList = kuaisuSort($rightList);
    return array_merge($leftList, [$base], $rightList);
}

4、插入排序:

假設前面的數都是排好順序的,要把第n個數插入到有序裡

function charuSort ($list)
{
    $len = count($list);
    for ($i = 1; $i < $len; $i++) {
        $tmp = $list[$i];//获取对比元素
        for ($j = $i - 1; $j > 0; $j--) {
            if ($list[$j] > $tmp) {
                $list[$j + 1] = $list[$j];
                $list[$j] = $tmp;
            } else {
                break;
            }
        }
    }
    return $list;
}

相關學習推薦:php程式設計(影片)

#

以上是php如何實作排序演算法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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