ホームページ バックエンド開発 PHPチュートリアル PHPバブルソートの簡単な理解

PHPバブルソートの簡単な理解

Mar 06, 2018 pm 01:38 PM
php バブル 選別

PHP にはさまざまな種類のソートが含まれますが、バブル ソート はおそらく私が使用する最も面倒なソートです。この記事では、PHP のバブル ソートについて簡単に説明します。私のような人はバブルソーティングについてあまり知りません。

1. バブルアルゴリズム

バブリングに関する記事をいくつか読みましたが、各ループの境界値に関する考え方は常に比較的一般的です。

初心者にとっては暗記するのは簡単ではありません。

でも、アルゴリズムは暗記しやすいので、時間が経つと忘れてしまいやすいので、一度書いて、できるだけ一つ一つの考え方を書き留めて、理解しやすいようにしました。 . 一度理解すると、より深い印象が残り、なかなか忘れられなくなります。

バブル アルゴリズム、コアは

1. ループ比較 隣接する 2 つの 配列 のサイズを毎回比較し、最大の配列を後ろに置くことで、すべての比較が 1 回ループされ、配列は最大の数値を配列の最後に置きます

2. 次に、ループを繰り返します (上記の比較ループを繰り返します): 現時点では、最後の値はループ時にループに参加する必要はありません。最大のものであると判断されました。つまり、はループを繰り返し、比較配列はどんどん小さくなっていきます。最後に、配列要素は 1 つだけ残ります。ループの終わり

コードレベルを見てください:

$arr=array(5,4,3,6,7,1,2,10,8,9);
ログイン後にコピー

ペアごとの比較から始めます

if($arr[$i]>$arr[$i+1]){//相邻比较 这个应该比较容易理解吧
        $tem=$arr[$i];
        $arr[$i]=$arr[$i+1];
        $arr[$i+1]=$tem;
    }
ログイン後にコピー

上記のコードは、2 つの配列の隣接する値を比較し、大きい方を後ろに置くことです。最大の $i は配列 index の前の桁であることがわかります。そうでない場合、$arr[$i+1] は存在せず、比較できません。つまり $i<count($ar)-1;$i の初期値は 0 です

内部比較ループから始めましょう

一般for ループこのように書きます

for($i=0;$i<$xx;$i++){
    if($arr[$i]>$arr[$i+1]){//相邻比较 这个应该比较容易理解吧
        $tem=$arr[$i];
        $arr[$i]=$arr[$i+1];
        $arr[$i+1]=$tem;
    }
} 
ログイン後にコピー

上記のアイデア各比較サイクルは最初の最初の要素から開始されるため、$i の開始値は 0 です。サイクルが 1 回繰り返されると、次のサイクルでは比較される要素が 1 つ少なくなります。ここで $xx はどんどん小さくなっていきますが、この $xx をどうやって決定するのでしょうか?

最初のサイクルの $xx の値はいくらですか?上記のペアごとの比較により、count($ar)-1

$xx という結論が得られます。最後の値は何ですか?上記のペアごとの比較から得られる結論は 1 です。

つまり、$xxはcount($arr)-$kです。$kは累積比較サイクルであり、これを(サイクルを1回繰り返す)に変更できます

for($i=0;$i<count($arr)-$k;$i++){
    if($arr[$i]>$arr[$i+1]){//相邻比较
        $tem=$arr[$i];
        $arr[$i]=$arr[$i+1];
        $arr[$i+1]=$tem;
    }
} 
ログイン後にコピー

この$kをもう一度見てください。これ、$k はランダムではありませんか? サイクルを繰り返すと累積されます。 以下のように繰り返しループコードを追加します

$k がどのように境界値を決定するかを見てみましょう。 上で述べたように、$xx の境界値は count($arr)-1 から 1 までとなります。数学的アルゴリズム $k の境界値は count($arr)-1

に対して 1 として出力され、それをループ $k=1;$k

要約は

for($k=1;$k<count($arr);$k++){
    for($i=0;$i<count($arr)-$k;$i++){ 
        if($arr[$i]>$[$i+1]){
            $temparr= $arr[$i];
            $arr[$i] =$arr[$i+1];
            $arr[$i+1] = $temparr;
        }
    }
}
ログイン後にコピー
です

もっと練習したほうが良いです。理解できない知識は、もう一度書くことで理解できることがあります。

以上が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)

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

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:27 PM

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

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

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

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

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:26 PM

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

See all articles