ホームページ  >  記事  >  バックエンド開発  >  PHP はいくつかの並べ替えおよび検索アルゴリズムを実装しています

PHP はいくつかの並べ替えおよび検索アルゴリズムを実装しています

little bottle
little bottle転載
2019-04-18 16:20:381747ブラウズ

バブルソート、クイックソート、二分探索などは簡単ですが、しばらく使わないと忘れてしまいがちなので、編集者が見つけてみんなで勉強するために共有したPHPの実装コードです。

ソート

バブルソート

最大値がポップアップするたびに

function bubbleSort($arr)
{
    $count = count($arr);
    if ($count == 0) return false;

    for ($i = 0; $i < $count - 1; $i++) {
        for ($k = 0; $k < $count - 1 - $i; $k++) {
            if ($arr[$k] < $arr[$k + 1]) {
                $tmp         = $arr[$k];
                $arr[$k]     = $arr[$k + 1];
                $arr[$k + 1] = $tmp;
            }
        }
    }

    return $arr;
}

クイックソート

ベンチマークとして値を選択し、小さいものは左側に配置され、大きいものは右側に配置され、次に左右に再帰的に配置され、最後にマージされます

function quickSort($arr)
{
    $count = count($arr);
    if ($count <= 1) return $arr;

    $base = $arr[0];
    $left = $right = [];
    for ($i = 1; $i < $count; $i++) {
        if ($arr[$i] < $base) {
            $left[] = $arr[$i];
        } else {
            $right[] = $arr[$i];
        }
    }

    $left  = quickSort($left);
    $right = quickSort($right);

    return array_merge($left, [$base], $right);
}

選択ソート

最小と思われる値を選択しますを順番に比較し、それが彼より小さいことがわかったら、位置を交換します。

function selectSort($arr)
{
    $count = count($arr);
    if ($count <= 1) return $arr;

    for ($i = 0; $i < $count; $i++) {
        //假设最小值位置
        $p = $i;
        //用假设的最小值$arr[$p]轮流比较,发现比他小的就互换
        for ($j = $i + 1; $j < $count; $j++) {
            if ($arr[$p] > $arr[$j]) {
                $p = $j;
            }
        }

        if ($p != $i) {
            $tmp     = $arr[$p];
            $arr[$p] = $arr[$i];
            $arr[$i] = $tmp;
        }
    }

    return $arr;
}

Search

二分探索

二分探索はソートされた配列である必要があります。配列の中間位置の値が取得されるたびに、ターゲットの比較

function binarySearch(array $arr, $target)
{
    $low = 0;
    $high = count($arr) - 1;
    while ($low <= $high) {
        $middle = floor(($high + $low) / 2);
        if ( $arr[$middle] == $target ) {
            return $middle;
        } elseif ( $arr[$middle] < $target ) {
            $low = $middle + 1;
        } else {
            $high = $middle - 1;
        }
    }

    return false;
}

推奨チュートリアル: PHP ビデオ チュートリアル

以上がPHP はいくつかの並べ替えおよび検索アルゴリズムを実装していますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。