Advertisement
Guest User

Untitled

a guest
Apr 21st, 2010
254
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.78 KB | None | 0 0
  1. public static class ArrayHelper
  2. {
  3.  
  4.     private static void Main()
  5.     {
  6.         var i = new []{1,1,1,2,2,3,4,5,5,5,6};
  7.          System.Console.WriteLine(i.BinarySeacrh(1));
  8.          System.Console.WriteLine(i.BinarySeacrh(2));
  9.          System.Console.WriteLine(i.BinarySeacrh(3));
  10.          System.Console.WriteLine(i.BinarySeacrh(4));
  11.          System.Console.WriteLine(i.BinarySeacrh(5));
  12.          System.Console.WriteLine(i.BinarySeacrh(6));
  13.          System.Console.WriteLine(i.BinarySeacrh(-1));
  14.         i = new []{1};
  15.         System.Console.WriteLine(i.BinarySeacrh(1));
  16.         System.Console.WriteLine(i.BinarySeacrh(2));
  17.         System.Console.WriteLine(i.BinarySeacrh(-1));
  18.         i = new []{1, 5};
  19.         System.Console.WriteLine(i.BinarySeacrh(-1));
  20.         System.Console.WriteLine(i.BinarySeacrh(1));
  21.         System.Console.WriteLine(i.BinarySeacrh(2));
  22.         System.Console.WriteLine(i.BinarySeacrh(5));
  23.         System.Console.WriteLine(i.BinarySeacrh(10));
  24.         i = new []{1,2,3,4};
  25.         System.Console.WriteLine(i.BinarySeacrh(1));
  26.         System.Console.WriteLine(i.BinarySeacrh(2));
  27.         System.Console.WriteLine(i.BinarySeacrh(3));
  28.         System.Console.WriteLine(i.BinarySeacrh(4));
  29.         System.Console.WriteLine(i.BinarySeacrh(5));
  30.         System.Console.WriteLine(i.BinarySeacrh(-1));
  31.         i = new int[0];
  32.         System.Console.WriteLine(i.BinarySeacrh(1));
  33.         System.Console.WriteLine(i.BinarySeacrh(-1));
  34.        
  35.     }
  36.    
  37.     public static int BinarySeacrh(this int[] a, int key)
  38.     {
  39.         if (a == null)
  40.         {
  41.             throw new System.ArgumentNullException();
  42.         }
  43.         int left = 0;
  44.         int rigth = a.Length - 1;
  45.         int m;
  46.         while (left <= rigth)
  47.         {
  48.             m = left + (rigth - left) / 2;
  49.             if (key == a[m])
  50.             {
  51.                 return m;
  52.             }
  53.             if (key > a[m])
  54.             {
  55.                 left = m + 1;
  56.             }
  57.             else
  58.             {
  59.                 if (key < a[m])
  60.                 {
  61.                     rigth = m - 1;
  62.                 }
  63.                 else
  64.                 {
  65.                     return -1;
  66.                 }
  67.             }
  68.         }
  69.         return -1;
  70.     }
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement