Array.BinarySearch(Array, Int32, Int32, Object) Method with examples in C#
Last Updated :
24 Jan, 2019
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:
using System;
using System.IO;
class GFG {
static void Main()
{
int [] intArr = {42, 5, 7, 12, 56, 1, 32};
Array.Sort(intArr);
foreach ( int i in intArr) Console.Write(i + " "
+ "\n" );
int index = Array.BinarySearch(intArr, 1, 5, 32);
if (index >= 0) {
Console.Write( "Index: " + index);
}
else {
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.
using System;
using System.IO;
class GFG {
static void Main()
{
int [] intArr = {42, 5, 7, 12,
56, 1, 32};
Array.Sort(intArr);
foreach ( int i in intArr) Console.Write(i + " "
+ "\n" );
int index = Array.BinarySearch(intArr, 1, 5, 44);
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
Please Login to comment...