タグ: VB.net 配列 結合

ソート済みの配列を併合する

二つの配列をまとめる事をマージと言います。その手順はシンプルで以下の通りとなります。

  1. 添え字用変数を二つ用意し、初期化する

  2. 二つの配列の添え字がある処を比較し、小さい方を結合させる配列に入れる

  3. 配列に代入した方の添え字を進める

  4. 代入元の配列のどちらかの処理が終了するまで処理を繰り返す

  5. 終了していない方の配列を結合先の配列に入れる

example(VB.net)

Dim aa() As Integer = {0, 2, 4, 6, 8, 12, 13}
Dim bb() As Integer = {1, 3, 5, 7, 9, 10, 11, 14}
Dim cc() As Integer

Sub Main()
  Dim a As Integer = 0
  Dim b As Integer = 0
  While a < aa.Length And b < bb.Length
    If aa(a) <= bb(b) Then
      InPutArray(aa, a)
    Else
      InPutArray(bb, b)
    End If
  End While
  While a < aa.Length
    InPutArray(aa, a)
  End While
  While b < bb.Length
    InPutArray(bb, b)
  End While
End Sub

Sub InPutArray(ByVal obj() As Integer, ByRef index As Integer)
  If cc Is Nothing Then 
    ReDim cc(0)
  Else 
    ReDim Preserve cc(cc.Length)
  End If
  cc(UBound(cc)) = obj(index)
  index += 1
End Sub

Linqを使用する

example(VB.net)

Dim aa() As Integer = {0, 2, 4, 6, 8, 12, 13}
Dim bb() As Integer = {1, 3, 5, 7, 9, 10, 11, 14}
Dim cc() As Integer

Sub Main()
   cc = (From C As Integer In aa.Concat(bb) Order By C).ToArray()
End Sub