マージソートとは、2つ(またはそれ以上)の順序付きリストを新しい順序付きリストにマージすることです。つまり、ソートするシーケンスを複数のサブシーケンスに分割し、各サブシーケンスを順序付けます。次に、順序付けられたサブシーケンスを全体の順序付けられたシーケンスにマージします。 マージソートは、マージ操作に基づいた効果的なソートアルゴリズムです。このアルゴリズムは、分割統治法の非常に典型的な応用です。 順序付けられたサブシーケンスをマージして、完全に順序付けられたシーケンスを取得します。つまり、最初に各サブシーケンスを順序付けし、次にサブシーケンスのセグメントを順序付けます。 2 つの順序付きリストが 1 つの順序付きリストに結合される場合は、2 方向の結合と呼ばれます。 マージソートアルゴリズムは安定しています。配列の場合は O(n) の追加スペースが必要で、リンクリストの場合は O(log(n)) の追加スペースが必要です。時間の計算量は O(nlog(n)) です。このアルゴリズムは適応型ではなく、データのランダム読み取りを必要としません。 動作原理: 1. 2 つのソートされたシーケンスの合計と同じサイズになるようにスペースを申請します。このスペースは、結合されたシーケンスを格納するために使用されます。 2. 2 つのポインタを設定します。その初期位置は、ソートされた 2 つのシーケンスの開始位置になります。 3. 2つのポインタが指す要素を比較し、比較的小さい要素を選択してマージスペースに配置し、ポインタを次の位置に移動します。 4. ポインタがシーケンスの最後に到達するまで手順3を繰り返します。 5. 他のシーケンスの残りの要素をすべて、結合されたシーケンスの末尾に直接コピーします。 コード実装:
マージソートは比較的安定したソートです。つまり、同じ要素の順序は変わりません。例えば、入力レコードが 1(1) 3(2) 2(3) 2(4) 5(5) の場合(括弧内のキーワードはレコードのキーです)、出力 1(1) 2(3) 2(4) 3(2) 5(5) は入力順で 2 と 2 になります。これは、ソートするデータに複数の情報が含まれており、そのうちの 1 つの情報でソートし、他の情報はできるだけ入力順に並べたい場合に非常に重要です。これもクイックソートに対する利点です。 【編集者のおすすめ】
|
<<: Java ソートアルゴリズムの概要 (VI): ヒープソート
>>: Javaソートアルゴリズムの概要(IV):シェルソート
[[413052]]この記事はLeiphone.comから転載したものです。転載する場合は、Lei...
人工知能は新しい概念でもなければ、単なる仕掛けでもありません。何十年も前から提案されてきました。真の...
TensorFlow は Python ベースの機械学習フレームワークです。 Coursera でロ...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
[[206067]] 1. モノのインターネット1. モノのインターネットとは何ですか?モノのイン...
近年、生成 AI とクラウドの融合に関心が集まっているのには理由があります。人工知能 (AI) とク...
11月21日、Deepmindは楽器とボーカルで音楽を生成できるLyriaというオーディオモデルをリ...
これは非公式の PyTorch ガイドですが、この記事では PyTorch フレームワークを使用した...
12月2日、国家工業情報セキュリティ発展研究センターは「中国人工知能特許技術分析報告書」を発表し、百...
AnimateAnyoneに続き、Alibabaのもう一つの「ダンス作品」論文が人気を集めている—...
ビッグデータの登場以来、「古い顧客を搾取する」問題はますます深刻になっています。テイクアウトでも旅行...
K-クラスタリングとはどういう意味ですか? K-means クラスタリングは、最も人気があり、広く使...
データが組織の生命線となっている今日のデジタル時代では、サイバーセキュリティが極めて重要になっていま...