using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
public static Int32 CountArray(BitArray bitArray)
int[] tmp = new int[bitArray.Length];
public static Int32 GetArrayCount(int[] ints)
for (Int32 i = 0; i < ints.Length; i++)
c = c - ((c >> 1) & 0x55555555);
c = (c & 0x33333333) + ((c >> 2) & 0x33333333);
c = ((c + (c >> 4) & 0xF0F0F0F) * 0x1010101) >> 24;
public static Int32 GetCardinality(BitArray bitArray)
Int32[] ints = new Int32[(bitArray.Count >> 5) + 1];
bitArray.CopyTo(ints, 0);
ints[ints.Length - 1] &= ~(-1 << (bitArray.Count % 32));
for (Int32 i = 0; i < ints.Length; i++)
c = c - ((c >> 1) & 0x55555555);
c = (c & 0x33333333) + ((c >> 2) & 0x33333333);
c = ((c + (c >> 4) & 0xF0F0F0F) * 0x1010101) >> 24;
public static void PrintArray(int[] array)
for (int i = 0; i < array.Length; i++)
Console.Write(array[i].ToString());
public static void Main()
System.Random rnd = new Random();
List<int[]> integer_list = new List<int[]>();
List<BitArray> ba_list = new List<BitArray>();
for (int i = 0; i < list_length; i++)
int[] new_list = new int[length];
for (int ca = 0; ca < new_list.Length; ca++)
BitArray ba_new = new BitArray(new_list);
integer_list.Add(new_list);
int[] d = new int[length];
HashSet<int> int_hsh = new HashSet<int>(length);
Stopwatch bsw = new Stopwatch();
Stopwatch sw = new Stopwatch();
foreach (int[] list in integer_list)
for (int i = 0; i < list.Length; i++)
loop_count = GetArrayCount(d);
foreach (BitArray current in ba_list)
bd = new BitArray(current);
bitarray_count = GetCardinality(bd);
Console.WriteLine("Time Elapsed (Ticks): " + sw.ElapsedTicks.ToString());
Console.WriteLine("Time Elapsed (Ms): " + sw.ElapsedMilliseconds.ToString());
Console.WriteLine("Count: " + loop_count.ToString());
Console.WriteLine("========================================================");
Console.WriteLine("Time Elapsed (Ticks): " + bsw.ElapsedTicks.ToString());
Console.WriteLine("Time Elapsed (Ms): " + bsw.ElapsedMilliseconds.ToString());
Console.WriteLine("Count: " + bitarray_count.ToString());
foreach(int[] q in integer_list)
int[] ba_int = new int[length];