目次
1. バブル ソート
2.並べ替えの選択
##3. 挿入ソート
はじめに:
ホームページ バックエンド開発 PHPチュートリアル PHPの基本的なアルゴリズムは何ですか?

PHPの基本的なアルゴリズムは何ですか?

Jun 18, 2019 pm 03:44 PM
PHPアルゴリズム

アルゴリズムはプログラムの核であるとよく言われますが、プログラムの良し悪しの鍵は、プログラムのアルゴリズムの質にあります。私はジュニア PHPer ですが、アルゴリズムに関することにはほとんど触れていません。ただし、バブル ソート、挿入ソート、選択ソート、クイック ソートの 4 つの基本アルゴリズムを習得する必要があると思います。

PHPの基本的なアルゴリズムは何ですか?

関連する推奨事項: 「PHP チュートリアル

要件: バブル ソート、クイック ソート、および選択ソートをそれぞれ使用します。挿入ソートメソッドは、以下の配列内の値を昇順にソートします。

$arr=array(11,3,56,62,21,66,32,78,36,76,39,88,34);
ログイン後にコピー

1. バブル ソート

はじめに:

バブル ソート (バブル ソート、台湾語訳: バブル ソートまたはバブル ソート) は、単純な並べ替えです。アルゴリズム。ソート対象のシーケンスを繰り返し調べて、2 つの要素を順番に比較し、順序が間違っている場合は入れ替えます。配列を訪問する作業は、それ以上の交換が必要なくなるまで繰り返されます。これは、配列がソートされたことを意味します。このアルゴリズムの名前は、小さい要素がスワッピングによって配列の先頭にゆっくりと「浮動」するという事実に由来しています。

ステップ:

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

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

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

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

特定のコード:

$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;
}
ログイン後にコピー

並べ替え効果:
PHPの基本的なアルゴリズムは何ですか?

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;
}
ログイン後にコピー

ソート効果:

PHPの基本的なアルゴリズムは何ですか?

##3. 挿入ソート

はじめに:

挿入ソートのアルゴリズムの説明は、シンプルで直感的なソート アルゴリズムです。これは、順序付けされたシーケンスを構築することで機能し、並べ替えられていないデータの場合は、並べ替えられたシーケンス内で後ろから前にスキャンし、対応する位置を見つけて挿入します。挿入ソートの実装では、通常、インプレース ソート (つまり、O(1) 個の余分なスペースのみを使用するソート) が使用されるため、後ろから前へのスキャン プロセス中に、繰り返し、徐々にシフトする必要があります。要素を後方にソートし、最新の要素の挿入スペースを提供します。

手順:

1. 最初の要素から始めて、この要素はソートされたとみなすことができます


2. 次の要素を取り出して、ソートされた要素シーケンスを後ろから前にスキャンします。

3. (ソートされた) 要素が新しい要素より大きい場合は、要素を次の位置に移動します


#4並べ替えられた要素が新しい要素

#5 以下になる位置が見つかるまで、手順 3 を繰り返します。新しい要素を位置


#6 に挿入します。繰り返します。ステップ 2

特定のコード:

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;
}
ログイン後にコピー

並べ替え効果:


PHPの基本的なアルゴリズムは何ですか?

4. クイック ソート

はじめに:

クイックソート Tony Hall が開発したソートアルゴリズムです。平均して、n 個の項目を並べ替えるには、O(n log n) 個の比較が必要です。最悪の場合、O(n2) 回の比較が必要になりますが、この状況は一般的ではありません。実際、クイックソートは、その内部ループがほとんどのアーキテクチャで効率的に実装でき、ほとんどの実世界のアプリケーションで適切に機能するため、他の Ο(n log n) アルゴリズムよりも大幅に高速であることがよくあります。必要な時間内に。

手順:

1. シーケンスから「ピボット」と呼ばれる要素を選択します。


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


3. 基本値より小さい要素の部分配列と基本値より大きい要素の部分配列を再帰的に並べ替えます。


特定のコード:

function quick_sort($arr)
{
//判断参数是否是一个数组
if(!is_array($arr)) return false;
//递归出口:数组长度为1,直接返回数组
$length = count($arr);
if($length<=1) return $arr;
//数组元素有多个,则定义两个空数组
$left = $right = array();
//使用for循环进行遍历,把第一个元素当做比较的对象
for($i=1; $i<$length; $i++)
{
//判断当前元素的大小
if($arr[$i]<$arr[0]){
$left[]=$arr[$i];
}else{
$right[]=$arr[$i];
}
}
//递归调用
$left=quick_sort($left);
$right=quick_sort($right);
//将所有的结果合并
return array_merge($left,array($arr[0]),$right);
}
ログイン後にコピー

並べ替え効果:

以上が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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHP プログラミングの一般的なアルゴリズムは何ですか? PHP プログラミングの一般的なアルゴリズムは何ですか? Jun 12, 2023 am 08:30 AM

PHP プログラミングでは、アルゴリズムは不可欠な部分です。一般的なアルゴリズムをマスターすると、コードの効率が向上するだけでなく、その後のプログラム設計にも役立ちます。 PHP プログラミングにおける一般的なアルゴリズムは次のとおりです。 ソート アルゴリズム ソート アルゴリズムとは、特定のルールに従って一連のデータを順序付けられたシーケンスに配置することを指します。 PHP プログラミングで一般的に使用されるソート アルゴリズムには、バブル ソート、挿入ソート、選択ソート、クイック ソートなどが含まれます。このうち、クイックソートは最も時間計算量が低いソートアルゴリズムであり、大規模なデータの処理に適しています。検索アルゴリズム 検索アルゴリズム

PHP の配列ソートと検索アルゴリズム PHP の配列ソートと検索アルゴリズム Jun 23, 2023 am 09:45 AM

PHP は、さまざまなデータ型とアルゴリズムをサポートする非常に人気のあるプログラミング言語であり、配列の並べ替えと検索アルゴリズムは基本的かつ重要な部分です。この記事では、PHP で一般的に使用される配列の並べ替えと検索のアルゴリズムと、そのアプリケーション シナリオと効率分析について紹介します。 1. 配列のソート PHP は、バブル ソート、挿入ソート、選択ソート、クイック ソート、マージ ソートなど、さまざまな配列のソート方法を提供します。以下は、一般的に使用されるいくつかのアルゴリズムの紹介とサンプル コードです。 バブル ソート (BubbleSort)

PHPのデータ構造とアルゴリズムを理解する PHPのデータ構造とアルゴリズムを理解する May 24, 2023 am 08:15 AM

PHP は Web 開発で広く使用されているスクリプト言語であり、動的な Web サイトの構築においてますます優れています。 Web 開発では、データ構造とアルゴリズムは他のプログラミング カテゴリと同様に重要であり、プログラムの実行効率に与える影響は特に重要です。特に、大量のデータの保存と処理、または高いプログラム パフォーマンス要件を伴うシナリオでは、データ構造とアルゴリズムは無視できない部分になっています。この記事では主に、PHP で一般的に使用されるデータ構造とアルゴリズムをいくつか紹介します。 1. データ構造配列 PHP 配列は非常に一般的です

PHP で知識を表現し、アルゴリズムを自動生成するにはどうすればよいでしょうか? PHP で知識を表現し、アルゴリズムを自動生成するにはどうすればよいでしょうか? May 22, 2023 pm 08:10 PM

インターネットの普及とアプリケーションの継続的な拡大に伴い、プログラミング言語の開発の重要性がますます高まっています。非常に人気のあるプログラミング言語として、PHP も絶えず開発されています。 PHP を使用したプログラミングの過程で、PHP 開発者は、何らかの知識を表現し、アルゴリズムを自動的に生成する必要に直面する場合があります。では、PHP で知識を表現し、アルゴリズムを自動生成するにはどうすればよいでしょうか?この記事では以下でこれについて説明します。 1. 知識表現 知識表現は人工知能の分野において非常に重要な問題です。知る

PHP アルゴリズム分析: 二分探索アルゴリズムを使用して、順序付けされた配列内の要素をすばやく見つけるにはどうすればよいですか? PHP アルゴリズム分析: 二分探索アルゴリズムを使用して、順序付けされた配列内の要素をすばやく見つけるにはどうすればよいですか? Sep 19, 2023 pm 01:14 PM

PHP アルゴリズム分析: 二分探索アルゴリズムを使用して、順序付けされた配列内の要素をすばやく見つけるにはどうすればよいですか?概要: 二分探索アルゴリズムは、順序付けされた配列内の特定の要素を見つけるのに適した効率的な検索アルゴリズムです。この記事では、二分探索アルゴリズムの原理を詳しく紹介し、PHP コード例を示します。原理: 二分探索アルゴリズムは、探索範囲を半分に減らすことを繰り返すことで、ターゲット要素を迅速に見つけます。処理としては、まず検索範囲を配列の先頭と末尾に絞り、次に中央要素のインデックスを計算して対象要素と比較し、その後、検索範囲を配列の先頭と末尾に絞ります。

PHP アルゴリズム分析: 動的計画アルゴリズムを使用して 0-1 ナップザック問題を解決するにはどうすればよいですか? PHP アルゴリズム分析: 動的計画アルゴリズムを使用して 0-1 ナップザック問題を解決するにはどうすればよいですか? Sep 19, 2023 pm 12:33 PM

PHP アルゴリズム分析: 動的計画アルゴリズムを使用して 0-1 ナップザック問題を解決するにはどうすればよいですか?はじめに: 動的プログラミングは、最適化問題を解決するために一般的に使用されるアルゴリズムのアイデアです。プログラム開発において、0-1 ナップザック問題は古典的な動的プログラミング アプリケーション シナリオです。この記事では、PHP を使用して 0-1 ナップザック問題を解決する動的プログラミング アルゴリズムを作成する方法を紹介し、具体的なコード例を示します。 0-1 ナップザック問題とは何ですか? 0-1 ナップザック問題は、古典的な組み合わせ最適化問題です。問題は次のように設定されます。容量 C のバックパックがあります。 n 個のオブジェクトがあります

PHP のアルゴリズムとデータ構造 PHP のアルゴリズムとデータ構造 May 25, 2023 am 08:51 AM

PHP は、Web アプリケーションの開発によく使用される、広く使用されている開発言語です。ただし、Web アプリケーションでは、データ処理、ストレージ、クエリなどを含む大量のデータを処理する必要があることがよくあります。そのため、PHP でアルゴリズムとデータ構造を適用することは、非常に重要なテクノロジです。アルゴリズムは、コンピューター プログラミングで問題を解決するために使用される一般的な方法です。プログラミングでは、プログラムの効率、保守性、拡張性を向上させるアルゴリズムを設計および実装することで問題を解決します。一般的に使用されるアルゴリズムには、並べ替え、検索、分割統治、貪欲などが含まれます。

ブレインマッピング機能におけるPHPとVueのコアアルゴリズムを深く理解する ブレインマッピング機能におけるPHPとVueのコアアルゴリズムを深く理解する Aug 15, 2023 pm 01:00 PM

ブレイン マッピング機能における PHP と Vue のコア アルゴリズムを深く理解する はじめに: 現代のインターネット時代では、情報の整理と管理に役立つさまざまなアプリケーションを使用することがよくあります。脳マッピングは情報を整理するための一般的かつ実用的な方法であり、複雑な思考プロセスをグラフィカルに表示できます。この記事では、ブレイン マッピング機能における PHP と Vue のコア アルゴリズムに焦点を当て、コード例を示します。 1. マインドマップの特徴. マインドマップは、中心となるテーマを核とし、そのテーマに関連する情報をツリー構造で表示する脳マップの一種です。

See all articles