Filkolev

Binary Search

May 27th, 2015
57
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. namespace BinarySearch
  2. {
  3.     using System;
  4.     using System.Linq;
  5.  
  6.     public class BinarySearch
  7.     {
  8.         public static void Main()
  9.         {
  10.             int[] array = Console.ReadLine().Split().Select(int.Parse).ToArray();
  11.             int elementToFind = int.Parse(Console.ReadLine());
  12.  
  13.             Array.Sort(array);
  14.  
  15.             Console.WriteLine(PerformBinarySearch(array, elementToFind));
  16.         }
  17.  
  18.         public static int PerformBinarySearch<T>(T[] array, T elementToSearch) where T : IComparable
  19.         {
  20.             int index = -1;
  21.             int min = 0;
  22.             int max = array.Length - 1;
  23.  
  24.             while (min < max)
  25.             {
  26.                 int mid = min + (max - min) / 2;
  27.  
  28.                 if (array[mid].CompareTo(elementToSearch) == 0)
  29.                 {
  30.                     while (mid >= 0 && array[mid].CompareTo(elementToSearch) == 0)
  31.                     {
  32.                         index = mid;
  33.                         mid--;
  34.                     }
  35.  
  36.                     return index;
  37.                 }
  38.  
  39.                 if (array[mid].CompareTo(elementToSearch) == -1)
  40.                 {
  41.                     min = mid;
  42.                 }
  43.                 else
  44.                 {
  45.                     max = mid;
  46.                 }
  47.             }
  48.  
  49.             return index;
  50.         }
  51.     }
  52. }
RAW Paste Data