ホームページ バックエンド開発 PHPの問題 PHP で一般的に使用されるアルゴリズムは何ですか?

PHP で一般的に使用されるアルゴリズムは何ですか?

Sep 17, 2019 pm 02:29 PM
php

php に関連する基本的なアルゴリズムは 4 つあります。つまり、バブル ソート、クイック ソート、選択ソート、挿入ソートです。

PHP で一般的に使用されるアルゴリズムは何ですか?

##1: バブル ソートメソッド

はじめに:(推奨学習:PHPプログラミングの入門からマスターまで)

バブルソートはシンプルなソートアルゴリズムです。ソート対象のシーケンスを繰り返し調べて、2 つの要素を順番に比較し、順序が間違っている場合は入れ替えます。

シーケンスを訪問する作業は、交換が必要なくなるまで繰り返されます。これは、シーケンスがソートされたことを意味します。このアルゴリズムの名前は、より小さな要素がスワッピングによって配列の先頭にゆっくりと「浮遊」するという事実に由来しています。

手順:

①: 隣接する要素を比較します。最初の要素が 2 番目の要素より大きい場合は、両方を交換します。

②: 隣接する要素の各ペアに対して、最初の最初のペアから最後の最後のペアまで、同じ作業を実行します。この時点では、最後の要素が最大の数値である必要があります。

③: 最後の要素を除くすべての要素に対して上記の手順を繰り返します。

④: 数値のペアがなくなるまで、要素の数を減らして上記の手順を繰り返します。比較

特定のコード:

$arr=array(1,43,54,62,21,66,32,78,36,76,39);
  function bubbleSort ($arr)
  {
  $len = count($arr);
  //该层循环控制 需要冒泡的轮数
  for ($i=1; $i<$len; $i++) {
  //该层循环用来控制每轮 冒出一个数 需要比较的次数
  for ($k=0; $k<$len-$i; $k++) {
  if($arr[$k] > $arr[$k+1]) {
  $tmp = $arr[$k+1]; // 声明一个临时变量
  $arr[$k+1] = $arr[$k];
  $arr[$k] = $tmp;
  }
  }
  }
  return $arr;
  }
ログイン後にコピー

2: 選択の並べ替え方法

選択の並べ替えは、シンプルで直感的な並べ替えアルゴリズムです。その動作原理は次のとおりです。まず、ソートされていないシーケンスで最小の要素を見つけ、それをソートされたシーケンスの開始位置に格納し、次に残りのソートされていない要素から最小の要素を探し続けます。次に、それを並べ替えシーケンスの最後に置きます。すべての要素がソートされるまで続きます。

特定のコード:

  //实现思路 双重循环完成,外层控制轮数,当前的最小值。内层 控制的比较次数
  function select_sort($arr) {
  //$i 当前最小值的位置, 需要参与比较的元素
  for($i=0, $len=count($arr); $i<$len-1; $i++) {
 //先假设最小的值的位置
  $p = $i;
  //$j 当前都需要和哪些元素比较,$i 后边的。
  for($j=$i+1; $j<$len; $j++) {
  //$arr[$p] 是 当前已知的最小值
 if($arr[$p] > $arr[$j]) {
 //比较,发现更小的,记录下最小值的位置;并且在下次比较时,应该采用已知的最小值进行比较。
 $p = $j;
 }
 }
 //已经确定了当前的最小值的位置,保存到$p中。
 //如果发现 最小值的位置与当前假设的位置$i不同,则位置互换即可
 if($p != $i) {
 $tmp = $arr[$p];
 $arr[$p] = $arr[$i];
 $arr[$i] = $tmp;
 }
 }
 //返回最终结果
 return $arr;
 }
ログイン後にコピー

3: 挿入ソート

挿入ソートのアルゴリズムの説明は、シンプルで直感的なソート アルゴリズムです。これは、順序付けされたシーケンスを構築することで機能し、並べ替えられていないデータの場合は、並べ替えられた順序で後ろから前にスキャンして、対応する位置を見つけて挿入します。

挿入ソートの実装では、通常、インプレース ソート (つまり、O(1) 個の追加スペースのみを必要とするソート) が使用されます。そのため、後ろから前へのスキャン プロセス中に、ソートされたものを繰り返し並べ替えます。最新の要素を挿入するためのスペースを確保するために、最後の要素が徐々に後方に移動されます。

手順:

①ソートされたと考えられる最初の要素から開始します。

②ソートされた後、次の要素を取り出します。並べ替えられた要素シーケンスを後ろから前にスキャンします。

③並べ替えられた要素が新しい要素より大きい場合は、要素を次の位置に移動します。

④並べ替えられた要素が見つかるまで手順 ③ を繰り返します。要素は新しい要素の位置以下です

⑤新しい要素を位置に挿入します

⑥手順を繰り返します②

特定のコード:

  function insert_sort($arr)
  {
  $len=count($arr);
  for($i=1; $i<$len; $i++) {
 //获得当前需要比较的元素值。
  $tmp = $arr[$i];
  //内层循环控制 比较 并 插入
  for($j=$i-1; $j>=0; $j--) {
  //$arr[$i];//需要插入的元素; $arr[$j];//需要比较的元素 
    if($tmp < $arr[$j]) {
 //发现插入的元素要小,交换位置
 //将后边的元素与前面的元素互换
     $arr[$j+1] = $arr[$j];
 //将前面的数设置为 当前需要交换的数
     $arr[$j] = $tmp;
     } else {
 //如果碰到不需要移动的元素
 //由于是已经排序好是数组,则前面的就不需要再次比较了。
     break;
     }
 }
 }
 //将这个元素 插入到已经排序好的序列内。
 //返回
 return $arr;
 }
ログイン後にコピー

4: クイック ソート

はじめに:

クイック ソートは、Tony Hall ソーティング アルゴリズムによって開発された手法です。平均して、n 個の項目を並べ替えるには、O(n log n) 個の比較が必要です。

最悪の場合、O(n2) 個の比較が必要になりますが、この状況は一般的ではありません。実際、クイックソートは、多くの場合、他の O(n log n) アルゴリズムよりも大幅に高速です。これは、その内部ループがほとんどのアーキテクチャで効率的に実装でき、ほとんどの実世界のデータに対して、二次時間が必要になる可能性を減らす設計の選択肢を決定できるためです。

ステップ:

① シーケンスから「ベースライン」と呼ばれる要素を選択します。

② 並べ替えシーケンスを繰り返します。すべての要素が改善されます。基準値より小さい要素は基準値の前に配置され、基準値より大きい要素はすべて基準値の後ろに配置されます (同じ数値がどちらの側にも配置できます)。このパーティションが終了すると、塩基はシーケンスの途中になります。これはパーティション操作と呼ばれます。

③ベースライン値より小さい要素の部分配列とベースライン値より大きい要素の部分配列を再帰的に並べ替えます

特定のコード:

rreee

以上がPHP で一般的に使用されるアルゴリズムは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

See all articles