検索
ホームページバックエンド開発Python チュートリアル一般的に使用される並べ替えアルゴリズムの動的図の説明

この記事では、視覚的に直感的で、一定の参考価値があるいくつかの一般的に使用される並べ替えアルゴリズムを主に使用します。興味のある友人はそれを参照できます

具体的な内容は次のとおりです

1 クイック並べ替え

はじめに:

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

手順:

シーケンスから「ピボット」と呼ばれる要素を選択します。
シーケンスを並べ替えます。ピボット値より小さいすべての要素はピボットの前に配置され、ピボット値より大きいすべての要素はピボットの後ろに配置されます。ピボットの前 ベースの後ろ (どちらの側にも同じ番号を付けることができます)。このパーティションが終了すると、塩基はシーケンスの途中になります。これをパーティション操作と呼びます。
基本値より小さい要素の部分配列と基本値より大きい要素の部分配列を再帰的に並べ替えます。

並べ替え効果:

2 マージソート

はじめに:

マージソート (マージソート、台湾語訳: マージソート) は、マージ操作に基づいた効果的な並べ替えアルゴリズムです。このアルゴリズムは、分割統治法 (pide と Conquer) を使用する非常に典型的なアプリケーションです。

ステップ:

サイズが 2 つのソートされたシーケンスの合計になるようにスペースを適用します。 このスペースは、マージされたシーケンスを保存するために使用されます
としましょう。 2 つのポインターを設定します。初期位置は、2 つのソートされたシーケンスの開始位置です。2 つのポインターが指す要素を比較し、比較的小さい要素を選択してマージ スペースに配置し、ポインターを次の位置に移動します。ステップ 3. 特定のポインターがシーケンスの最後に到達するまで、他のシーケンスの残りのすべての要素をマージされたシーケンスの最後に直接コピーします。 並べ替え効果:

) は、次のようなデータ構造を使用して設計された並べ替えアルゴリズムを指します。ヒープ。ヒープは、完全なバイナリ ツリーに近似し、ヒープ プロパティを満たす構造です。つまり、子ノードのキー値またはインデックスは常に親ノードより小さい (または大きい) ものです。

手順:

(さらに複雑です。オンラインで確認してください)

並べ替え効果:


4 選択並べ替え

はじめに:

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

並べ替え効果:

5 バブルソート


はじめに:

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

手順:

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

隣接する要素の各ペアに対して、最初のペアから始めて最後のペアで終わるまで、同じことを行います。この時点では、最後の要素が最大の数値である必要があります。

最後の要素を除くすべての要素に対して上記の手順を繰り返します。 比較する数値のペアがなくなるまで、要素の数を減らしながら上記の手順を繰り返します。

並べ替え効果:

6 挿入並べ替え

紹介:

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

手順:

ソートされたと考えられる最初の要素から開始します
次の要素を取り出し、既にソートされた一連の要素を後ろから前にスキャンします
要素(ソート済み)が大きい場合は、新しい要素、要素を次の位置に移動します
並べ替えられた要素が新しい要素以下になる位置が見つかるまでステップ 3 を繰り返します
その位置に新しい要素を挿入します
ステップ 2 を繰り返します

7 ヒルソート

はじめに:

ヒルソートは、降順増分ソートアルゴリズムとも呼ばれ、挿入ソートの高速かつ安定した改良版です。

ヒルソートは、挿入ソートの次の 2 つの特性に基づいて改良された方法を提案します:

挿入ソートは、ほぼソートされたデータを操作する場合に非常に効率的です。つまり、線形ソートの効率を達成できます
しかし、挿入ソートは一般的に言えば、挿入ソートは一度に 1 ビットしかデータを移動できないため、非効率的です

ソート効果:

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

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Python:自動化、スクリプト、およびタスク管理Python:自動化、スクリプト、およびタスク管理Apr 16, 2025 am 12:14 AM

Pythonは、自動化、スクリプト、およびタスク管理に優れています。 1)自動化:OSやShutilなどの標準ライブラリを介してファイルバックアップが実現されます。 2)スクリプトの書き込み:Psutilライブラリを使用してシステムリソースを監視します。 3)タスク管理:スケジュールライブラリを使用してタスクをスケジュールします。 Pythonの使いやすさと豊富なライブラリサポートにより、これらの分野で優先ツールになります。

Pythonと時間:勉強時間を最大限に活用するPythonと時間:勉強時間を最大限に活用するApr 14, 2025 am 12:02 AM

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

Python:ゲーム、GUIなどPython:ゲーム、GUIなどApr 13, 2025 am 12:14 AM

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

Python vs. C:比較されたアプリケーションとユースケースPython vs. C:比較されたアプリケーションとユースケースApr 12, 2025 am 12:01 AM

Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間のPython計画:現実的なアプローチ2時間のPython計画:現実的なアプローチApr 11, 2025 am 12:04 AM

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Python:主要なアプリケーションの調査Python:主要なアプリケーションの調査Apr 10, 2025 am 09:41 AM

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

2時間でどのくらいのPythonを学ぶことができますか?2時間でどのくらいのPythonを学ぶことができますか?Apr 09, 2025 pm 04:33 PM

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は?プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は?Apr 02, 2025 am 07:18 AM

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター