ホームページ >バックエンド開発 >PHPチュートリアル >PHPでソートアルゴリズムと検索アルゴリズムを実行するにはどうすればよいですか?

PHPでソートアルゴリズムと検索アルゴリズムを実行するにはどうすればよいですか?

WBOY
WBOYオリジナル
2023-05-20 16:32:021290ブラウズ

一般的に使用されるプログラミング言語として、PHP には、開発者が大量のデータをより効率的に処理できるようにするための並べ替えおよび検索アルゴリズムが多数組み込まれています。この記事では、いくつかの一般的な並べ替えアルゴリズムと検索アルゴリズムを紹介し、PHP でそれらを使用する方法を説明します。

1. 並べ替えアルゴリズム

  1. バブル ソート

バブル ソートは基本的な並べ替えアルゴリズムであり、その原理は隣接する要素をペアで比較することです。そして、それらの位置は、並べ替えの目的を達成するために、大小関係に応じて交換されます。

function bubbleSort($arr) {
    $len = count($arr);

    for ($i = 0; $i < $len - 1; $i++) {
        for ($j = 0; $j < $len - $i - 1; $j++) {
            if ($arr[$j] > $arr[$j + 1]) {
                $temp = $arr[$j];
                $arr[$j] = $arr[$j + 1];
                $arr[$j + 1] = $temp;
            }
        }
    }

    return $arr;
}
  1. クイックソート

クイックソートは一般的に使用されるソートアルゴリズムであり、その原理はベンチマーク値を選択して配列をソートすることです。ベンチマーク値より小さい部分とベンチマーク値より大きい部分に分割し、これら 2 つの部分に対して再帰的にクイック ソートを実行し、最後に結果をマージしてソートが完了します。具体的な実装方法は以下の通りです:

function quickSort($arr) {
    if (count($arr) < 2) {
        return $arr;
    }

    $pivot = $arr[0];
    $left = $right = [];

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

    return array_merge(quickSort($left), [$pivot], quickSort($right));
}
  1. マージソート

マージソートは古典的なソートアルゴリズムであり、その原理はソート対象の配列を連続的に小さいものに分割することです。各サブ配列の要素が 1 つだけになるまでサブ配列を作成し、次に隣接する 2 つのサブ配列をマージしてサイズの関係に従ってソートし、配列全体がソートされるまでこのプロセスを繰り返します。具体的な実装方法は以下の通りです:

function mergeSort($arr) {
    if (count($arr) < 2) {
        return $arr;
    }

    $mid = floor(count($arr) / 2);
    $left = array_slice($arr, 0, $mid);
    $right = array_slice($arr, $mid);

    return merge(mergeSort($left), mergeSort($right));
}

function merge($left, $right) {
    $result = [];

    while (count($left) && count($right)) {
        if ($left[0] <= $right[0]) {
            $result[] = array_shift($left);
        } else {
            $result[] = array_shift($right);
        }
    }

    while (count($left)) {
        $result[] = array_shift($left);
    }

    while (count($right)) {
        $result[] = array_shift($right);
    }

    return $result;
}

2. 探索アルゴリズム

  1. 逐次探索

逐次探索は線形探索とも呼ばれ、その原理は次のとおりです。検索対象 配列の最初の要素から開始して、ターゲット値が見つかるか配列の末尾が検索されるまで、各要素が 1 つずつ比較され、ターゲット値と等しいかどうかが確認されます。

function linearSearch($arr, $target) {
    $len = count($arr);

    for ($i = 0; $i < $len; $i++) {
        if ($arr[$i] == $target) {
            return $i;
        }
    }

    return -1;
}
  1. 二分探索

二分探索はハーフサーチとも呼ばれ、探索範囲を左右に連続的に狭めていく原理です。順序付けされた配列の場合、2 つの部分で、毎回配列の中央の値を検索し、中央の値がターゲット値より大きい場合は左半分の検索を続け、それ以外の場合はターゲット値が見つかるまで右半分の検索を続けます。検索範囲が空です。

function binarySearch($arr, $target) {
    $low = 0;
    $high = count($arr) - 1;

    while ($low <= $high) {
        $mid = floor(($low + $high) / 2);
        if ($arr[$mid] < $target) {
            $low = $mid + 1;
        } else if ($arr[$mid] > $target) {
            $high = $mid - 1;
        } else {
            return $mid;
        }
    }

    return -1;
}

3. 概要

この記事では、一般的な並べ替えアルゴリズムと検索アルゴリズムを紹介し、これらのアルゴリズムを PHP で実装するためのサンプル コードを提供します。 PHP には多くの並べ替え機能や検索機能が組み込まれていますが、これらのアルゴリズムを理解することは、データ構造とアルゴリズムへの理解を深め、プログラミング スキルを向上させるのに役立ちます。同時に、実際の開発では、特定のニーズに応じて最適なアルゴリズムを選択し、コードの効率と品質を向上させることができます。

以上がPHPでソートアルゴリズムと検索アルゴリズムを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。