安定した並べ替えアルゴリズムは何ですか?
安定したソート アルゴリズムには、1. バブル ソート、2. 選択ソート、3. 挿入ソート、4. クイック ソート、5. マージ ソート、6. 基数ソート、7. ヒル ソート (シェル)、8 . ヒープソート。
このチュートリアルの動作環境: Windows 10 システム、Dell G3 コンピューター。
一般的な並べ替えアルゴリズムの安定性を分析し、それぞれの簡単な理由を説明します。
安定したソート アルゴリズム:
1. バブル ソート
バブル ソート バブル並べ替えとは、小さな要素を前方に移動したり、大きな要素を後方に移動したりすることです。比較は隣接する 2 つの要素の比較であり、これら 2 つの要素間でも交換が行われます。したがって、2 つの要素が等しい場合、退屈にそれらを交換することはないと思います。
2 つの等しい要素が隣接していない場合、前のペアごとの交換で 2 つが隣接していても、今回は交換されないため、同じ要素の順序は変更されていません。リスク バブル ソートは安定したソート アルゴリズムです。
2. 選択の並べ替え
選択の並べ替えでは、各位置の最小の現在の要素が選択されます。たとえば、最初の位置で最小の要素が選択され、次の位置の中で最小の要素が選択されます。残りの要素。2 番目の要素として 2 番目に小さい要素を選択し、n-1
番目の要素まで続きます。n 番目の要素は、残っている唯一の最大要素であるため、選択する必要はありません。次に、選択において、現在の要素がある要素より小さく、その小さな要素が現在の要素と等しい要素の後に出現する場合、交換後の安定性は破壊されます。
は発音が少し難しいです。たとえば、シーケンス 5 8 5 2 9
では、1
番目の要素 5# を選択するとわかります。最初のパスの ## が
2 と交換されると、元のシーケンス内の
2
5 の相対的な順序が破棄されるため、選択の並べ替えは行われません。安定したソートアルゴリズム。
3. 挿入ソート
挿入ソートは、すでに順序付けられた小さなシーケンスに基づいて、一度に 1 つの要素を挿入します。もちろん、最初は、この小さな順序付けられたシーケンスには要素が 1 つだけあり、それが最初の要素でした。比較は、順序付けられたシーケンスの最後から始まります。つまり、挿入する要素が、既にソートされている最大の要素と比較されます。要素がそれより大きい場合は、その要素のすぐ後ろに挿入します。それ以外の場合は、挿入するまで前方を探し続けます。挿入する必要がある要素を見つけます。 挿入された要素と等しい要素が見つかった場合、挿入された要素は、挿入する要素を等しい要素の後に配置します。 つまり、等しい要素の順序は変わっておらず、元の順序なしシーケンスからの順序がソート順となるため、挿入ソートは安定します。4. クイック ソート
クイック ソートには 2 つの方向があります。左側の添字 i は右端まで進みます。a[i] の場合<= a[center_index]、ここで
center_index は center 要素の配列添字であり、通常は配列の
0 要素として解釈されます。
a[j]>a[center_index] の場合、右側の添え字
j は左端まで移動します。
i<=j、
a[i] と
a[j] を交換し、繰り返します。以上の処理を
i>j まで行います。
a[j] と
a[center_index] を入れ替えて、簡単な並べ替えを完了します。中心要素が
a[j] と交換されると、前の要素の安定性が損なわれる可能性が非常に高くなります。たとえば、シーケンスは
5 3 3 4 3 8 9 10 11# になります。 ##、ピボット要素 5
と 3
(5
番目の要素、添え字は 1
から始まります) を交換すると、要素を変更する 3 安定性が崩れるため、クイックソートは不安定なソートアルゴリズムであり、中心要素とa[j]が入れ替わる瞬間に不安定になります。
マージ ソートは、シーケンスを短いシーケンスに再帰的に分割します。再帰的な終了は、短いシーケンスが
1## のみを持つことです。 # 個の要素 (直接順序付けされていると考えてください) または2 シーケンス (
1 の比較と交換) を実行し、順序付けされた各セグメント シーケンスを順序付けされた長いシーケンスにマージし、元のシーケンスになるまでマージを続けます。すべて並べ替えました。
1 または
2 要素がある場合、
1 要素は交換されず、
2 要素は交換されないことがわかります。サイズが等しい場合に交換されます。意図的に交換しているわけではないため、安定性が損なわれることはありません。
では、短い順序のシーケンスをマージする過程で、安定性は破壊されるのでしょうか?
6. 基数ソート
基数ソートでは、まず低位でソートしてから収集します。
次に高位でソートしてから収集します。 ;などを最高の位置まで続けます。一部の属性には優先順位が設定されている場合があります。属性は、最初に優先度の低い順に並べ替えられ、次に優先度の高い順に並べ替えられます。最終的な順序は、優先度の高い属性が最初になり、同じ高い優先順位と低い優先順位を持つ属性が最初になります。基数ソートは個別のソートと個別のコレクションに基づいているため、安定したソート アルゴリズムです。
7. ヒル ソート (シェル)
ヒル ソートは、異なる同期長に従って要素を挿入し、並べ替えることです。ステップサイズが最も大きいため、挿入ソートの要素数が少なく、非常に高速です。
要素が基本的に順序付けされており、ステップ サイズが小さい場合、順序付けされたシーケンスに対して挿入ソートは非常に効率的です。したがって、Hill ソートの時間計算量は O(n^2)
よりも優れています。複数の挿入ソートにより、1 つの挿入ソートは安定しており、同じ要素の相対的な順序は変更されないことがわかっていますが、異なる挿入ソート プロセスでは、同じ要素がそれぞれの挿入ソートで移動する可能性があり、最終的にはその安定性が低下します。変更. がスクランブルされているため、シェルソートが不安定です。
8. ヒープのソート
ヒープの構造は、ノード i
の子が 2 * i であることを知っています。
および 2 * i 1
ノードの場合、大きな上部ヒープには親ノードがその 2
子ノード以上である必要があり、小さな上部ヒープには親ノードが必要です。ノードはその 2
子ノード以下である必要があります。長さ n
のシーケンスで、ヒープのソート プロセスは、n / 2
から始まる最大 (最大) の値とその子ノードの合計 3
を選択します。ヒープ) または最小 (小さな上部ヒープ)、これらの 3
要素のどちらを選択しても、安定性が損なわれることはありません。ただし、n / 2-1
、n/2-2
、...1
の要素を選択すると、安定性が破壊されます。 n/2
番目の親ノードが次の要素を交換する一方で、n/2-1
番目の親ノードが次の同じ要素を交換しない可能性があります。その場合、間の安定性は次のようになります。これら 2 つの同一の要素は破壊されます。したがって、ヒープ ソートは安定したソート アルゴリズムではありません。
関連知識の詳細については、FAQ 列をご覧ください。
以上が安定した並べ替えアルゴリズムは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









1. 問題の背景 1. 両面市場実験の概要 両面市場、つまりプラットフォームには、生産者と消費者の 2 つの参加者が含まれ、双方がお互いを促進します。たとえば、Kuaishou にはビデオ制作者とビデオ消費者がおり、この 2 つのアイデンティティはある程度重複する可能性があります。バイラテラル実験とは、生産者側と消費者側のグループを組み合わせた実験手法です。双方向実験には以下のようなメリットがあります。 (1) 製品の DAU や作品アップロード者数の変化など、新たな戦略による 2 つの側面への影響を同時に検出できます。二国間プラットフォームには多くの場合クロスサイドネットワーク効果があり、読者が増えれば増えるほど著者の活動が活発になり、著者の活動が活発になればなるほど、より多くの読者がフォローするようになります。 (2) エフェクトのオーバーフローや転送を検出できます。 (3) 作用機序をより深く理解するのに役立ちます。AB 実験自体は、原因と結果の関係を伝えることはできません。

Vue テクノロジ開発でデータをフィルタリングおよび並べ替える方法 Vue テクノロジ開発では、データのフィルタリングと並べ替えは非常に一般的で重要な機能です。データのフィルタリングと並べ替えを通じて、必要な情報を迅速にクエリして表示できるため、ユーザー エクスペリエンスが向上します。この記事では、Vue でデータをフィルターおよび並べ替える方法を紹介し、読者がこれらの関数をよりよく理解して使用できるように具体的なコード例を示します。 1. データのフィルタリング データのフィルタリングとは、特定の条件に基づいて要件を満たすデータをフィルタリングすることを指します。 Vue では、comp を渡すことができます

並べ替え | Nuka-Cola、Chu Xingjuan 基本的なコンピューター サイエンスのコースを受講した友人なら、並べ替えアルゴリズムを個人的に設計したはずです。つまり、コードを使用して、順序なしリスト内の項目を昇順または降順に並べ替えます。これは興味深い挑戦であり、実現する方法はたくさんあります。並べ替えタスクをより効率的に実行する方法を見つけるために、多くの時間が費やされてきました。基本的な操作として、並べ替えアルゴリズムはほとんどのプログラミング言語の標準ライブラリに組み込まれています。オンラインで大量のデータを整理するために、世界中のコードベースでさまざまなソート手法やアルゴリズムが使用されていますが、少なくとも LLVM コンパイラで使用される C++ ライブラリに関する限り、ソート コードは 10 年以上変わっていません。 。最近、Google DeepMindAI チームは、

C++ で基数ソート アルゴリズムを使用する方法 基数ソート アルゴリズムは、並べ替える要素を限られた桁のセットに分割することによって並べ替えを完了する非比較並べ替えアルゴリズムです。 C++ では、基数ソート アルゴリズムを使用して整数のセットをソートできます。以下では、特定のコード例を使用して、基数ソート アルゴリズムを実装する方法を詳しく説明します。アルゴリズムのアイデア 基数ソート アルゴリズムのアイデアは、ソート対象の要素を限られたデジタル ビットのセットに分割し、各ビットで順番に要素をソートすることです。各ビットのソートが完了しました

選択ソート アルゴリズムを C# で実装する方法 選択ソート (SelectionSort) は、単純で直感的なソート アルゴリズムであり、その基本的な考え方は、毎回ソートする要素から最小 (または最大) の要素を選択し、それを最後に配置することです。ソートされたシーケンス。すべての要素が並べ替えられるまで、このプロセスを繰り返します。 C# で選択並べ替えアルゴリズムを実装する方法と、具体的なコード例について詳しく学びましょう。選択ソートメソッドの作成 まず、選択ソートを実装するメソッドを作成する必要があります。このメソッドは、

Swoole は、PHP 言語をベースとした高性能ネットワーク通信フレームワークで、複数の非同期 IO モードと複数の高度なネットワーク プロトコルの実装をサポートしています。 Swoole をベースとして、そのマルチスレッド機能を使用して、高速ソート アルゴリズムなどの効率的なアルゴリズム操作を実装できます。高速ソートアルゴリズム (QuickSort) は一般的なソートアルゴリズムであり、ベンチマーク要素を配置すると、要素が 2 つの部分列に分割され、ベンチマーク要素より小さいものは左側に配置され、ベンチマーク以上の要素は左に配置されます。要素が右側に配置され、次に左右のサブシーケンスが配置されます。

配列ソートアルゴリズムは、要素を特定の順序で配置するために使用されます。一般的なアルゴリズムの種類は次のとおりです。 バブル ソート: 隣接する要素を比較して位置を交換します。選択ソート: 最小の要素を見つけて、それを現在の位置に入れ替えます。挿入ソート: 要素を 1 つずつ正しい位置に挿入します。クイックソート: 分割統治法。配列を分割するピボット要素を選択します。マージソート: 分割統治、再帰的ソート、およびサブ配列のマージ。

さまざまなシナリオでは、適切な PHP 配列ソート アルゴリズムを選択することが重要です。バブル ソートは安定性を必要としない小規模な配列に適しており、クイック ソートは安定性が高く、安定性を必要としない状況に適しています。 ; ヒープソートは最大値または最小値を効率的に見つけます。実際のケースを比較すると、時間効率の点ではクイックソートが他のアルゴリズムより優れていますが、安定性を考慮する必要がある場合はマージソートを選択する必要があります。