using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
public static int loopcnt = 0;
public static void Main()
Stopwatch sw = new Stopwatch();
string[] arrA = new string[] { "7", "1", "2", "3", "4", "5", "9", "7", "7", "1" };
string[] arrB = new string[] { "1", "1", "2", "2", "3", "4", "5", "5", "5", "5" };
Console.WriteLine("RANDOM CASE -two unorderd, not unique lists ");
Console.WriteLine("A = " + string.Join(",", arrA));
Console.WriteLine("B = " + string.Join(",", arrB));
string[] diffAminusB = new string[arrA.Length];
string[] diffBminusA = new string[arrB.Length];
BitArray bitarrRemoveA = new BitArray(arrA.Length);
for (int b = 0; b < arrB.Length; b++)
for (a = 0; a < arrA.Length; a++)
if (!bitarrRemoveA[a] && arrA[a] == arrB[b])
bitarrRemoveA.Set(a, true);
diffBminusA[d++] = arrB[b];
for (a = 0; a < arrA.Length; a++)
diffAminusB[idx++] = arrA[a];
Console.WriteLine("(A-B) Result = " + string.Join(",", diffAminusB).Trim(','));
Console.WriteLine("(B-A) Result = " + string.Join(",", diffBminusA).TrimEnd(','));
Console.WriteLine("No. of loops = " + loopcnt);
Console.WriteLine("No. of loops = " + arrA.Length + " - Post copy using BitArray to a sized array");
Console.WriteLine("Result Unorderd Final A then B = " + (string.Join(",", diffAminusB)).Trim(',') + "," + string.Join(",", diffBminusA).Trim(',') + " in " + sw.ElapsedTicks + " ticks.");
Console.WriteLine("Result Unorderd Final B then A = " + (string.Join(",", diffBminusA)).Trim(',') + "," + string.Join(",",diffAminusB).Trim(',') + " in " + sw.ElapsedTicks + " ticks.");
List<string> C = diffBminusA.ToList();
List<string> D = diffBminusA.ToList().Concat(diffAminusB.ToList()).ToList();
Console.WriteLine("Result Ordered Final = " + string.Join(",", D).TrimStart(','));
Console.WriteLine("Result O(n^2) but very fast - can you beat it?");