Array.BinarySearch(Array, Int32, Int32, Object) Method with examples in C#
Last Updated : 24 Jan, 2019
Improve
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:csharp csharp
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.
- 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.
- 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.
// 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:
Example 2: If the element is not in the array it prints a negative value or if it is out of the range.1 5 7 12 32 42 56 Index: 4
// 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:
Reference:1 5 7 12 32 42 56 Index :-7