Open In App

Array.BinarySearch(Array, Int32, Int32, Object) Method with examples in C#

Last Updated : 24 Jan, 2019
Improve
Improve
Like Article
Like
Save
Share
Report

Array.BinarySearch(Array, int32, int32, Object) Method is used to search a range of elements in a one-dimensional sorted array for a value, using the IComparable interface implemented by each element of the array and by the specified value. It searches only in a specified boundary that the user defines.

Syntax:

public static int BinarySearch(Array array, int index, int length, object value);

Parameters:

  • array: It is 1-D array in which we have to search for an element.
  • index: It is the starting index of the range from where you want to start the search.
  • length: It is the length of the range in which we want to search.
  • value: It is the value which we to search for.

Return Value: It returns the index of the specified value in the specified array if the value is found otherwise it returns a negative number. There are different cases of return values as follows:

  • If the value is not found and value is less than one or more elements in the array, the negative number returned is the bitwise complement of the index of the first element that is larger than value.
  • If the value is not found and value is greater than all elements in the array, the negative number returned is the bitwise complement of (the index of the last element plus 1).
  • If this method is called with a non-sorted array, the return value can be incorrect and a negative number could be returned, even if the value is present in the array.

Exceptions:

  • ArgumentNullException: If the array is null.
  • RankException: If array is multidimensional.
  • ArgumentOutOfRangeException: If the range is less than lower bound OR length is less than 0.
  • ArgumentException: If the index and length do not specify the valid range in array OR value is of the type that is not compatible with the elements of the array.
  • InvalidOperationException: If value does not implement the IComparable interface, and the search encounters an element that does not implement the IComparable interface.

Below programs illustrate the above-discussed method:

Example 1:




// C# Program to illustrate the use of 
// Array.BinarySearch(Array, Int32, 
// Int32, Object) Method
using System;
using System.IO;
  
class GFG {
      
    // Main Method
    static void Main()
    {
        // initializing the integer array
        int[] intArr = {42, 5, 7, 12, 56, 1, 32};
          
        // sorts the intArray as it must be 
        // sorted before using method
        Array.Sort(intArr);
          
        // printing the sorted array
        foreach(int i in intArr) Console.Write(i + " "
                                              + "\n");
                                                
        // intArr is the array we want to find
        // and 1 is the starting index
        // of the range to search. 5 is the 
        // length of the range to search.
        // 32 is the object to search
        int index = Array.BinarySearch(intArr, 1, 5, 32);
          
        if (index >= 0) {
              
            // if the element is found it 
            // returns the index of the element
            Console.Write("Index: " + index);
        }
          
        else {
              
            // if the element is not
            // present in the array or
            // if it is not in the 
            // specified range it prints this
            Console.Write("Element is not found");
        }
    }
}


Output:

1 
5 
7 
12 
32 
42 
56 
Index: 4

Example 2: If the element is not in the array it prints a negative value or if it is out of the range.




// C# Program to illustrate the use of 
// Array.BinarySearch(Array, Int32, 
// Int32, Object) Method
using System;
using System.IO;
  
class GFG {
      
    // Main Method
    static void Main()
    {
        // initializing the integer array
        int[] intArr = {42, 5, 7, 12,
                          56, 1, 32};
                            
        // sorts the intArray as it must be 
        // sorted before using Method
        Array.Sort(intArr);
          
        // printing the sorted array
        foreach(int i in intArr) Console.Write(i + " "
                                              + "\n");
                                                
        // intArr is the array we want to
        // find. and 1 is the starting
        // index of the range to search. 5 is 
        // the length of the range to search
        // 44 is the object to search
        int index = Array.BinarySearch(intArr, 1, 5, 44);
          
        // as the element is not present
        // it prints a negative value.
        Console.Write("Index :" + index);
    }
}


Output:

1 
5 
7 
12 
32 
42 
56 
Index :-7

Reference:



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads