3 つの一般的な PHP アルゴリズムの実装方法をまとめます

PHPz
リリース: 2023-04-03 19:52:02
オリジナル
865 人が閲覧しました

PHP は、Web 開発の分野で広く使用されている強力なスクリプト言語です。 PHP は、Web サイト開発に使用されるだけでなく、さまざまなアルゴリズムやデータ構造の実装にも使用できます。この記事では、バブル ソート、クイック ソート、バイナリ検索を含む 3 つの一般的なアルゴリズムと、それらを PHP で実装する方法を紹介します。

1. バブルソート

バブルソートは、隣接する要素を継続的に比較し、順番に入れ替えることでソートを実現するシンプルなソートアルゴリズムです。このアルゴリズムの時間計算量は O(n^2) です。ここで、n は配列の長さです。

PHP では、次のコードを使用してバブル ソートを実装できます:

function bubbleSort($arr) { 
  $len = count($arr); 
  for ($i = 0; $i < $len; $i++) { 
    for ($j = $len - 1; $j > $i; $j--) { 
      if ($arr[$j] < $arr[$j - 1]) { 
        $temp = $arr[$j]; 
        $arr[$j] = $arr[$j - 1]; 
        $arr[$j - 1] = $temp; 
      } 
    } 
  } 
  return $arr; 
}
ログイン後にコピー

2. クイック ソート

クイック ソートは、最初に配列を次のように分割する効率的なソート アルゴリズムです。大小の 2 つの部分配列を作成し、それらを再帰的に並べ替えます。このアルゴリズムの時間計算量は O(nlogn) です。ここで、n は配列の長さです。

PHP では、次のコードを使用してクイック ソートを実装できます:

function quickSort($arr) { 
  if (count($arr) <= 1) { 
    return $arr; 
  } 
  $pivot = $arr[0]; 
  $left = array(); 
  $right = array(); 
  for ($i = 1; $i < count($arr); $i++) { 
    if ($arr[$i] < $pivot) { 
      $left[] = $arr[$i]; 
    } else { 
      $right[] = $arr[$i]; 
    } 
  } 
  return array_merge(quickSort($left), array($pivot), quickSort($right)); 
}
ログイン後にコピー

3. 二分検索

二分検索は、順序配列は次のような効率的な検索アルゴリズムです。小さい配列と大きい配列の 2 つの部分配列に分割し、目的の要素が見つかるか、目的の要素が存在しないと判断されるまで、目的の要素が存在する部分配列を再帰的に検索します。このアルゴリズムの時間計算量は O(logn) です。ここで、n は配列の長さです。

PHP では、次のコードを使用してバイナリ検索を実装できます:

function binarySearch($arr, $target) {
  $left = 0;
  $right = count($arr) - 1;
  while ($left <= $right) {
    $mid = floor(($left + $right) / 2);
    if ($arr[$mid] == $target) {
      return $mid;
    } else if ($arr[$mid] > $target) {
      $right = $mid - 1;
    } else {
      $left = $mid + 1;
    }
  }
  return -1;
}
ログイン後にコピー

要約すると、PHP は Web サイト開発の実装に使用できるだけでなく、さまざまな実装にも使用できます。アルゴリズムとデータ構造。実際の開発では、実際のニーズに応じて適切なアルゴリズムとデータ構造を選択し、プログラムのパフォーマンスと効率を最適化できます。

以上が3 つの一般的な PHP アルゴリズムの実装方法をまとめますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート