/*
 *  C# Program to Search an element with Array Indices
 */
using System;

class ArrayBinarySearch
{
    public static void Main()
    {
        int[] ints = { 0, 10, 100, 1000, 1000000 };
        Console.WriteLine("Array indices and elements: ");
        for (int i = 0; i < ints.Length; i++)
            {
                Console.Write("[{0}]={1, -5}", i, ints[i]);
            }
        Console.WriteLine();
        FindObject(ints, 25);
        FindObject(ints, 1000);
        FindObject(ints, 2000000);
        Console.ReadLine();
    }

    public static void FindObject(Array array, Object o)
    {
        int index = Array.BinarySearch(array, 0, array.Length, o);
        Console.WriteLine();
        if (index > 0)
            {
                Console.WriteLine("Object: {0} found at [{1}]", o, index);
            }
        else if (~index == array.Length)
            {
                Console.WriteLine("Object: {0} not found. "
                                  + "No array object has a greater value.", o);
                Console.WriteLine();
            }
        else
            {
                Console.WriteLine("Object: {0} not found. "
                                  + "Next larger object found at [{1}].", o, ~index);
            }
    }
}

/*
Array indices and elements:
[0]=0    [1]=10   [2]=100  [3]=1000 [4]=1000000
Object: 25 not found. Next larger object found at [2].
Object: 1000 found at [3]
Object: 2000000 not found. No array object has a greater value.