static void Main(string[] args) { string result = ""; int problem_size = 20; int[] data = new int[problem_size]; data[0] = 333; Random k = new Random(1000); for (int i = 1; i < problem_size; i++) { data[i] = 100 + k.Next(900); } Vector <int> vector = new Vector <int>(problem_size); // ------------------ BinarySearch ---------------------------------- int[] temp = null; int check; try { vector.Sorter = null; temp = new int[problem_size]; data.CopyTo(temp, 0); Array.Sort(temp, new AscendingIntComparer()); Console.WriteLine("\nTest A: Apply BinarySearch searching for number 333 to array of integer numbers sorted in AscendingIntComparer: "); vector = new Vector <int>(problem_size); for (int i = 0; i < problem_size; i++) { vector.Add(data[i]); } vector.Sort(new AscendingIntComparer()); Console.WriteLine("Resulting order: " + vector.ToString()); check = Array.BinarySearch(temp, 333, new AscendingIntComparer()); check = check < 0 ? -1 : check; if (vector.BinarySearch(333, new AscendingIntComparer()) != check) { throw new Exception("The resulting index (or return value) is incorrect."); } Console.WriteLine(" :: SUCCESS"); result = result + "A"; } catch (Exception exception) { Console.WriteLine(" :: FAIL"); Console.WriteLine(exception.ToString()); result = result + "-"; } try { vector.Sorter = null; temp = new int[problem_size]; data.CopyTo(temp, 0); Array.Sort(temp, new AscendingIntComparer()); Console.WriteLine("\nTest B: Apply BinarySearch searching for number " + (temp[0] - 1) + " to array of integer numbers sorted in AscendingIntComparer: "); vector = new Vector <int>(problem_size); for (int i = 0; i < problem_size; i++) { vector.Add(data[i]); } vector.Sort(new AscendingIntComparer()); Console.WriteLine("Resulting order: " + vector.ToString()); check = Array.BinarySearch(temp, temp[0] - 1, new AscendingIntComparer()); check = check < 0 ? -1 : check; if (vector.BinarySearch(data[0] - 1, new AscendingIntComparer()) != check) { throw new Exception("The resulting index (or return value) is incorrect."); } Console.WriteLine(" :: SUCCESS"); result = result + "B"; } catch (Exception exception) { Console.WriteLine(" :: FAIL"); Console.WriteLine(exception.ToString()); result = result + "-"; } try { vector.Sorter = null; Console.WriteLine("\nTest C: Apply BinarySearch searching for number " + (temp[problem_size - 1] + 1) + " to array of integer numbers sorted in AscendingIntComparer: "); temp = new int[problem_size]; data.CopyTo(temp, 0); Array.Sort(temp, new AscendingIntComparer()); vector = new Vector <int>(problem_size); for (int i = 0; i < problem_size; i++) { vector.Add(data[i]); } vector.Sort(new AscendingIntComparer()); Console.WriteLine("Resulting order: " + vector.ToString()); check = Array.BinarySearch(temp, temp[problem_size - 1] + 1, new AscendingIntComparer()); check = check < 0 ? -1 : check; if (vector.BinarySearch(data[problem_size - 1] + 1, new AscendingIntComparer()) != check) { throw new Exception("The resulting index (or return value) is incorrect."); } Console.WriteLine(" :: SUCCESS"); result = result + "C"; } catch (Exception exception) { Console.WriteLine(" :: FAIL"); Console.WriteLine(exception.ToString()); result = result + "-"; } try { vector.Sorter = null; temp = new int[problem_size]; data.CopyTo(temp, 0); Array.Sort(temp, new DescendingIntComparer()); Console.WriteLine("\nTest D: Apply BinarySearch searching for number 333 to array of integer numbers sorted in DescendingIntComparer: "); vector = new Vector <int>(problem_size); for (int i = 0; i < problem_size; i++) { vector.Add(data[i]); } vector.Sort(new DescendingIntComparer()); Console.WriteLine("Resulting order: " + vector.ToString()); check = Array.BinarySearch(temp, 333, new DescendingIntComparer()); check = check < 0 ? -1 : check; if (vector.BinarySearch(333, new DescendingIntComparer()) != check) { throw new Exception("The resulting index (or return value) is incorrect."); } Console.WriteLine(" :: SUCCESS"); result = result + "D"; } catch (Exception exception) { Console.WriteLine(" :: FAIL"); Console.WriteLine(exception.ToString()); result = result + "-"; } try { vector.Sorter = null; temp = new int[problem_size]; data.CopyTo(temp, 0); Array.Sort(temp, new DescendingIntComparer()); Console.WriteLine("\nTest E: Apply BinarySearch searching for number " + (temp[0] - 1) + " to array of integer numbers sorted in DescendingIntComparer: "); vector = new Vector <int>(problem_size); for (int i = 0; i < problem_size; i++) { vector.Add(data[i]); } vector.Sort(new DescendingIntComparer()); Console.WriteLine("Resulting order: " + vector.ToString()); check = Array.BinarySearch(temp, temp[0] - 1, new DescendingIntComparer()); check = check < 0 ? -1 : check; if (vector.BinarySearch(data[0] - 1, new DescendingIntComparer()) != check) { throw new Exception("The resulting index (or return value) is incorrect."); } Console.WriteLine(" :: SUCCESS"); result = result + "E"; } catch (Exception exception) { Console.WriteLine(" :: FAIL"); Console.WriteLine(exception.ToString()); result = result + "-"; } try { vector.Sorter = null; Console.WriteLine("\nTest F: Apply BinarySearch searching for number " + (temp[problem_size - 1] + 1) + " to array of integer numbers sorted in DescendingIntComparer: "); temp = new int[problem_size]; data.CopyTo(temp, 0); Array.Sort(temp, new DescendingIntComparer()); vector = new Vector <int>(problem_size); for (int i = 0; i < problem_size; i++) { vector.Add(data[i]); } vector.Sort(new DescendingIntComparer()); Console.WriteLine("Resulting order: " + vector.ToString()); check = Array.BinarySearch(temp, temp[problem_size - 1] + 1, new DescendingIntComparer()); check = check < 0 ? -1 : check; if (vector.BinarySearch(data[problem_size - 1] + 1, new DescendingIntComparer()) != check) { throw new Exception("The resulting index (or return value) is incorrect."); } Console.WriteLine(" :: SUCCESS"); result = result + "F"; } catch (Exception exception) { Console.WriteLine(" :: FAIL"); Console.WriteLine(exception.ToString()); result = result + "-"; } Console.WriteLine("\n\n ------------------- SUMMARY ------------------- "); Console.WriteLine("Tests passed: " + result); Console.ReadKey(); }