0

私が配列を持っていると仮定します

myArray1 = {A、B、C、D、E、F、…。、T}

myArray1の要素のサブセットを含む別のものがありますが、順序が異なる場合があります

myArray2 = {A、C、H、G、F、M、R、S、T}

myArray1とmyArray2の配列要素の順序を個別に決定できます。

myArray2を正しい要素の順序でmyArray1にマージするにはどうすればよいですか?myArray2のmyArray1の欠落している要素は、空であると見なされます。

4

3 に答える 3

1

このような意味ですか?

''// Contains only the subset of myArray1 that is also in myArray2
Dim intersection As New SortedSet(Of Char)(myArray1)
intersection.IntersectWith(myArray2)

''// Merge back into the first array via a sorted list:
Dim sorted As New List(Of Char)(myArray1)
sorted.AddRange(intersection)
sorted.Sort()
Dim result As Char() = sorted.ToArray()

これにより、のすべての要素にmyArray1加えて、に表示される(したがって結果に重複する)すべての要素をソートされた順序で含む配列が作成されます。myArray2myArray1

于 2010-11-23T15:45:30.593 に答える
0

それらが文字列であると仮定すると、

myArray1 = { "A", "B", "C", "D", "E", "F", …., "T"}

それから

dim d as new dictionary(of string,something)
for each s as string in myarray1
  if not d.containskey(s) then
    d.add(s,something)
  end if
next
for each s as string in myarray1
  if not d.containskey(s) then
    d.add(s,something)
  end if
next
for each s as string in d.keys
  debug.writeline s
next
于 2010-11-23T15:43:35.143 に答える
0

フレームワークのバージョン4をターゲットにしている場合は、を使用できますSortedSet(Of T)

それ以外の場合、最も簡単な解決策は、最初の2つの配列の要素を含む3番目の配列(またはList(Of T))を作成し、重複を削除して、アプリケーションに適した並べ替えアルゴリズムを適用することです。

そして、多くの場合、これをループで何度も繰り返すことになり、可能な限り最高のパフォーマンスを引き出す必要がある場合を除いて、最も単純なソリューションが最適です。

于 2010-11-23T15:45:17.650 に答える