ペアを見つける従来の方法は、配列をソートすることです (以下の方法 A)。もう 1 つの方法は、2 つのネストされたループを使用することです (方法 B)。
Tell("Method A...");
int[] a = new int[]{3, 1, 4, 1, 5, 9, 5, 5};
int lengthA = a.Length;
Array.Sort(a);
for (int i = 1; i < lengthA; i++)
{
if (a[i-1] == a[i])
{
Tell("Method A Found pair in a: "+a[i-1]+" and "+a[i]);
}
} // for i
Tell("Method B...");
int[] b = new int[]{3, 1, 4, 1, 5, 9, 5, 5};
int lengthB = b.Length;
for (int i = 0; i < lengthB-1; i++)
{
for (int j = i+1; j < lengthB; j++)
{
if (b[i] == b[j])
{
Tell("Method B Found a pair in b: "+b[i]+" and "+b[j]);
}
} // for j
} // for i
これが出力です...
- 方法 A...
- 方法 A で見つかったペア: 1 と 1
- 方法A aで見つかったペア:5と5
- 方法A aで見つかったペア:5と5
- 方法 B...
- 方法 B b でペアを見つけた: 1 と 1
- 方法 B b でペアを見つけた: 5 と 5
- 方法 B b でペアを見つけた: 5 と 5
- 方法 B b でペアを見つけた: 5 と 5
メソッド B がメソッド A よりも多くのペアを報告する理由がわかると思います。