Advertisement
Klaxon

[C# Arrays] Binary Search Algorithm

Sep 30th, 2013
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.02 KB | None | 0 0
  1. // 11. Write a program that finds the index of given element in a sorted array of integers by using the binary search algorithm (find it in Wikipedia).
  2.  
  3. using System;
  4.  
  5. class BinarySearchAlgorithm
  6. {
  7.     static void Main()
  8.     {
  9.         // read array size and number to check
  10.         Console.Write("Enter wanted array size: ");
  11.         int n = int.Parse(Console.ReadLine());
  12.         Console.Write("Enter a number to check his index: ");
  13.         int wantedNumber = int.Parse(Console.ReadLine());
  14.  
  15.         int[] array = new int[n];
  16.  
  17.         for (int i = 0; i < n; i++)
  18.         {
  19.             array[i] = int.Parse(Console.ReadLine());
  20.         }
  21.  
  22.         Array.Sort(array);
  23.         // binary search magic goes here
  24.         int index = Array.BinarySearch(array, wantedNumber);
  25.         if (index == -1)
  26.         {
  27.             Console.WriteLine("Index not found!");
  28.         }
  29.         else
  30.         {
  31.             // printing
  32.             Console.WriteLine("The index of number {0} is: {1} ", wantedNumber, index);
  33.         }
  34.  
  35.  
  36.         /********************************************
  37.          * Main logic behind binary search algorithm*
  38.          * ******************************************
  39.        
  40.         int min = 0; // starting point
  41.         int max = array.Length - 1; // ending point
  42.         int index = 0;
  43.  
  44.         while (min <= max)
  45.         {
  46.             int mid = (min + max) / 2; // find middle point
  47.             int currMid = array[mid]; // current middle point
  48.  
  49.             if (currMid == wantedNumber) // if wanted element is in the current middle point
  50.             {
  51.                 index = mid; // wanted element is here
  52.                 break;
  53.             }
  54.             else if (currMid < wantedNumber) // if wanted element is greater than current middle point
  55.             {
  56.                 min = mid + 1; // we search in the right of middle point
  57.             }
  58.             else
  59.             {
  60.                 max = mid - 1; // we search in the left of middle point
  61.             }
  62.         }
  63.         */
  64.     }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement