プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

データ構造のマージアルゴリズム


マージアルゴリズムは、2つの並べ替えられたリストを1つのリストにマージするために使用されます。このアルゴリズムはさまざまな場合に使用されます。マージソートを実行する場合は、ソーターリストをより大きなリストにマージする必要があります。

アプローチは簡単です。 2つのリストを取ります。2つのポインタがあります。最初のものは最初のリストの要素を指し、2番目のものは2番目のリストの要素を指します。それらの値に基づいて、これら2つのリストのいずれかから小さい要素が取得され、対応するリストのポインターが増加します。この操作は、1つのリストがなくなるまで実行されます。その後、最後にマージされたリストの最後に残りのリストを追加します。

より良いアイデアを得るためにイラストを見てみましょう。

データ構造のマージアルゴリズム

アルゴリズム

マージ(配列、左、中央、右)-

Begin
   nLeft := m - left+1
   nRight := right – m
   define arrays leftArr and rightArr of size nLeft and nRight respectively
   for i := 0 to nLeft do
      leftArr[i] := array[left +1]
   done
   for j := 0 to nRight do
      rightArr[j] := array[middle + j +1]
   done
   i := 0, j := 0, k := left
   while i < nLeft AND j < nRight do
      if leftArr[i] <= rightArr[j] then
         array[k] = leftArr[i]
         i := i+1
      else
         array[k] = rightArr[j]
         j := j+1
         k := k+1
      done
   while i < nLeft do
      array[k] := leftArr[i]
      i := i+1
      k := k+1
   done
   while j < nRight do
      array[k] := rightArr[j]
      j := j+1
      k := k+1
   done
End

  1. ハーフエッジデータ構造

    はじめに テンプレートパラメータまたはハーフエッジデータ構造(HalfedgeDSと略記)のHDSは、平面マップ、多面体、またはその他の方向付け可能な2次元など、頂点、エッジ、および面の入射情報を維持できるエッジ中心のデータ構造として定義されます。ランダムな次元に埋め込まれたサーフェス。各エッジは、反対方向の2つのハーフエッジに分割されます。各ハーフエッジには、1つの入射面と1つの入射頂点が格納されます。各面と各頂点に1つの入射ハーフエッジが格納されます。ハーフエッジデータ構造のバリエーションを減らすと、面のハーフエッジポインタや面の保存など、この情報の一部を削除できます。 ハーフエッジデ

  2. データ構造における適応型マージとソート

    アダプティブマージソート アダプティブマージソートは、ソートされたサブリストのマージソートを実行します。ただし、最初のサブリストのサイズは、サイズ1のサブリストではなく、要素のリスト間の順序の存在に依存します。たとえば、図のリストについて考えてみます。 2つのソートされたサブリストで構成されています。 要素16、15、14、13を含むサブリスト1。 要素9、10、11、12のサブリスト2。 サブリスト1はソートされていますが、逆の順序になっています。したがって、サブリスト1は、図に示すように逆になります。 サブリストが見つかると、マージプロセスが