PHP プログラミングでアルゴリズムを使用するにはどうすればよいですか?

王林
リリース: 2023-06-12 11:24:02
オリジナル
984 人が閲覧しました

コンピューター技術の継続的な発展に伴い、プログラミングにおけるアルゴリズムの役割はますます重要になっているだけでなく、プログラマーの注目もますます高まっています。 PHP プログラミングでは、アルゴリズムを使用すると、タスクをより迅速かつ効率的に完了できます。この記事では、PHP プログラミングでアルゴリズムを使用する方法を説明します。

1. アルゴリズムの概要

アルゴリズムは問題を解決する方法であり、特定の問題を解決したり、特定のタスクを完了したりするために使用される一連の規則的な操作ステップです。プログラミングでは、アルゴリズムは問題をより迅速かつ効率的に解決するのに役立ちます。

PHP プログラミングで一般的に使用されるアルゴリズムには、並べ替えアルゴリズム、検索アルゴリズム、文字列一致アルゴリズムなどが含まれます。

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

並べ替えアルゴリズムは、特定のルールに従ってデータのセットを並べ替えるアルゴリズムです。一般的に使用されるソート アルゴリズムには、バブル ソート、挿入ソート、選択ソート、クイック ソート、マージ ソートなどがあります。

1. バブル ソート

バブル ソートは単純な並べ替えアルゴリズムです。その原理は、配列を繰り返し走査し、毎回 2 つの隣接する要素を比較することです。順序が一致しない場合は、所定の順序で交換されます。

サンプル コード:

function bubbleSort($arr){
    $len = count($arr);
    for($i=0;$i<$len;$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;
}
ログイン後にコピー

2. 挿入ソート

挿入ソートは、ソートされていないデータをソートされたデータ シーケンスに挿入するソート アルゴリズムです。その原理は、最初の要素から開始して、後続の要素を並べ替えられたデータ シーケンスに挿入することです。

サンプル コード:

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

3. 選択ソート

選択ソートは単純な並べ替えアルゴリズムです。その原理は、並べ替えられていないデータから最小値を選択することです。それをソートされたデータシーケンスに組み込みます。

サンプル コード:

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

4. クイック ソート

クイック ソートは効率的な並べ替えアルゴリズムであり、その原理は、大きなデータを右へ移動、小さなデータへの移動に分割することです。最後にデータは 2 つの部分に分割されます。

サンプルコード:

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

5. マージソート

マージソートは、「分割統治」の考え方に基づいた並べ替えアルゴリズムです。データを 2 つに分割します。各部分は別々にソートされ、最後に 2 つの順序付けされた配列が 1 つの順序付けされた配列に結合されます。

サンプルコード:

function mergeSort($arr){
    $len = count($arr);
    if($len <= 1){
        return $arr;
    }
    $mid = intval($len/2);
    $left = array_slice($arr,0,$mid);
    $right = array_slice($arr,$mid);
    $left = mergeSort($left);
    $right = mergeSort($right);
    $mergeArr = array();
    while(count($left) && count($right)){
        $mergeArr[] = $left[0] < $right[0] ? array_shift($left) : array_shift($right);
    }
    return array_merge($mergeArr,$left,$right);
}
ログイン後にコピー

3. 検索アルゴリズム

検索アルゴリズムは、一連のデータ内の特定の要素を見つけるためのアルゴリズムです。一般的に使用される検索アルゴリズムには、逐次検索、バイナリ検索、ハッシュ検索などが含まれます。

1. 逐次検索

逐次検索は単純な検索アルゴリズムであり、その原理は、配列の最初の要素から目的の要素または配列の末尾が見つかるまで検索することです。

サンプルコード:

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

2. 二分探索

二分探索は配列を 2 つの部分に分割するという効率的な検索アルゴリズムです。 in 対象要素が後半にある場合は前半を続け、対象要素が後半にある場合は後半を検索します。

サンプルコード:

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

4. 文字列マッチングアルゴリズム

文字列マッチングアルゴリズムは、長い文字列の中から別の部分文字列を見つけるアルゴリズムです。一般的に使用される文字列マッチング アルゴリズムには、ブルート フォース マッチング アルゴリズム、KMP アルゴリズム、Boyer-Moore アルゴリズムなどが含まれます。

1. ブルート フォース マッチング アルゴリズム

ブルート フォース マッチング アルゴリズムは、単純な文字列マッチング アルゴリズムであり、その原理は、メイン文字列の各文字から開始して、パターン文字列を 1 文字ずつマッチングすることです。 。 マッチ。

サンプル コード:

function bruteForce($str,$subStr){
    $len1 = strlen($str);
    $len2 = strlen($subStr);
    for($i=0;$i<=$len1-$len2;$i++){
        for($j=0;$j<$len2;$j++){
            if($str[$i+$j] != $subStr[$j]){
                break;
            }
        }
        if($j == $len2){
            return $i;
        }
    }
    return -1;
}
ログイン後にコピー

2.KMP アルゴリズム

KMP アルゴリズムは、効率的な文字列マッチング アルゴリズムです。その原理は、既知の情報を使用して一致の数を最小限に抑えることです。 KMP アルゴリズムの中核は、文字マッチングのためのプレフィックス テーブルを構築することです。

サンプル コード:

function KMP($str,$subStr){
    $next = getNext($subStr);
    $i = $j = 0;
    $len1 = strlen($str);
    $len2 = strlen($subStr);
    while($i<$len1 && $j<$len2){
        if($j == -1 || $str[$i] = $subStr[$j]){
            $i++;
            $j++;
        }else{
            $j = $next[$j];
        }
    }
    if($j == $len2){
        return $i - $j;
    }else{
        return -1;
    }
}

function getNext($subStr){
    $len = strlen($subStr);
    $next[0] = -1;
    $i = 0;
    $j = -1;
    while($i<$len-1){
        if($j == -1 || $subStr[$i] == $subStr[$j]){
            $i++;
            $j++;
            $next[$i] = $j;
        }else{
            $j = $next[$j];
        }
    }
    return $next;
}
ログイン後にコピー

上記は、PHP プログラミングでのアルゴリズムの使用方法の概要です。実際のプログラミングでは、さまざまな状況に応じて適切なアルゴリズムを選択することで、プログラムの効率を効果的に向上させることができます。同時に、より複雑なプログラミングに対処するために、より多くのアルゴリズムを学び、習得し続ける必要もあります。

以上がPHP プログラミングでアルゴリズムを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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