2012-02-14 9 views
1

私は2つの拡張可能な配列に文字列を持っています。2つの文字列配列を比較し、それぞれの違いを良いパフォーマンスで返す

私の配列が似ていると言うことができます:アレイ2

と比較すると、他の3種類の配列が私に配列1の違いを与える必要があります

ARRAY - 4  ARRAY - 5  ARRAY - 6 
    a9    a4    a1 
    a12    a8    a2 
            a3 
            a10 
            a11 

:として私は結果を取得したい

ARRAY - 1  ARRAY - 2 
    a1    a1 
    a2    a2 
    a3    a3 
    a9    a4 
    a10    a8 
    a11    a10 
    a12    a11 

-array4 here gives the strings that is included in array1 but not found in array2 
-array5 here gives the strings that is included in array2 but not found in array1 
-array6 here gives the strings that is found in both 

このコードは、

です。
i = 0 
j = 0 

For Each innerElement1 In CompareElement1 'CompareElement1 is the array1 here 

    NoneFound = 1 

    'Ones thats in first element also found in second element.. 
    For Each innerElement2 In CompareElement2 'CompareElement2 is the array2 here 

     If innerElement1 = innerElement2 Then 

      'Expand array 
      ReDim Preserve IncludedInBoth(0 To UBound(IncludedInBoth) + 1) 
      IncludedInBoth(i) = innerElement1 
      'Item found in both so NoneFound is 0. 
      NoneFound = 0 
      i = i + 1 

     End If 

    Next 

    'Ones thats in first element but not found in second element.. 
    If NoneFound = 1 Then 

     'Expand array 
     ReDim Preserve NotIncludedInElem2(0 To UBound(NotIncludedInElem2) + 1) 
     NotIncludedInElem2(j) = innerElement1 
     j = j + 1 

    End If 

Next 

'Seperate Comparison for the ones that found in second element _ 
but not found in first element.. 
i = 0 

For Each innerElement1 In CompareElement2 

    NoneFound = 1 

    'Ones thats in second element also found in first element. 
    For Each innerElement2 In IncludedInBoth 

     If innerElement1 = innerElement2 Then 

      'Item found in both so NoneFound is 0. 
      NoneFound = 0 

     End If 

    Next 

    'Ones thats in second element but not found in first element.. 
    If NoneFound = 1 Then 

     'Expand array 
     ReDim Preserve NotIncludedInElem1(0 To UBound(NotIncludedInElem1) + 1) 
     NotIncludedInElem1(i) = innerElement1 
     i = i + 1 

    End If 

Next 

私のコードは正確に比較して真の答えを与えますが、内部のfor eachコールによって引き起こされるパフォーマンスの欠如により、これをより高速な方法と比較する方法がありますか? 、データの量と

array1 and array2 are two different sized arrays that contains thousands(~100.000)of strings in each. 
also they are not in order. i would like to learn how to order them alphabetically. 
+0

データベースに配列データがありますか。そうであれば、探している情報を返すためのクエリを簡単に書くことができます。 –

+1

並べ替えについて知りたい場合は、[ここ](http://www.vbforums.com/showthread.php?t=473677)で始めるのが良いでしょう。私はあなたがソートされていない配列を比較しようとするところに行くつもりはないと思います。 –

+0

@GMastrosこんにちは私はデータベースの配列を持っていないので、私はより速い方法を求めていました。なぜなら、私は安全なストレージの問題のためにデータベースを避けていましたが、 –

答えて

2

テーブルへのデータベース、負荷を作成し、SQLを使用します。永遠のようなその撮影は、この比較も..

少し注意を終了します。それは手動で行うのが遅すぎます。

+0

私は正しいと思います..私はこの答えを恐れていましたが、dbは唯一のオプションの感謝のようです。 –

関連する問題