Information
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

Array.BinarySearch Method

Searches a one-dimensional sorted Array for a value, using a binary search algorithm.

Overload List

Searches an entire one-dimensional sorted Array for a specific element, using the IComparable interface implemented by each element of the Array and by the specified object.

Supported by the .NET Compact Framework.

[Visual Basic] Overloads Public Shared Function BinarySearch(Array, Object) As Integer
[C#] public static int BinarySearch(Array, object);
[C++] public: static int BinarySearch(Array*, Object*);
[JScript] public static function BinarySearch(Array, Object) : int;

Searches an entire one-dimensional sorted Array for a value, using the specified IComparer interface.

[Visual Basic] Overloads Public Shared Function BinarySearch(Array, Object, IComparer) As Integer
[C#] public static int BinarySearch(Array, object, IComparer);
[C++] public: static int BinarySearch(Array*, Object*, IComparer*);
[JScript] public static function BinarySearch(Array, Object, IComparer) : int;

Searches a section of a one-dimensional sorted Array for a value, using the IComparable interface implemented by each element of the Array and by the specified value.

[Visual Basic] Overloads Public Shared Function BinarySearch(Array, Integer, Integer, Object) As Integer
[C#] public static int BinarySearch(Array, int, int, object);
[C++] public: static int BinarySearch(Array*, int, int, Object*);
[JScript] public static function BinarySearch(Array, int, int, Object) : int;

Searches a section of a one-dimensional sorted Array for a value, using the specified IComparer interface.

Supported by the .NET Compact Framework.

[Visual Basic] Overloads Public Shared Function BinarySearch(Array, Integer, Integer, Object, IComparer) As Integer
[C#] public static int BinarySearch(Array, int, int, object, IComparer);
[C++] public: static int BinarySearch(Array*, int, int, Object*, IComparer*);
[JScript] public static function BinarySearch(Array, int, int, Object, IComparer) : int;

Example

The following code example shows how to use BinarySearch to locate a specific object in an Array.

[Visual Basic] 
Imports System
Imports Microsoft.VisualBasic

Public Class SamplesArray    
    
    Public Shared Sub Main()
        
        ' Creates and initializes a new Array.
        Dim myIntArray As Array = Array.CreateInstance(GetType(Int32), 5)
        Dim i As Integer
        For i = myIntArray.GetLowerBound(0) To myIntArray.GetUpperBound(0)
            myIntArray.SetValue(i * 2, i)
        Next i 
        ' Displays the values of the Array.
        Console.WriteLine("The Int32 array contains the following:")
        PrintValues(myIntArray)
        
        ' Locates a specific object that does not exist in the Array.
        Dim myObjectOdd As Object = 3
        FindMyObject(myIntArray, myObjectOdd)
        
        ' Locates an object that exists in the Array.
        Dim myObjectEven As Object = 6
        FindMyObject(myIntArray, myObjectEven)
    End Sub
    
    
    Public Shared Sub FindMyObject(myArr As Array, myObject As Object)
        Dim myIndex As Integer = Array.BinarySearch(myArr, myObject)
        If myIndex < 0 Then
            Console.WriteLine("The object to search for ({0}) is not found. " _
               + "The next larger object is at index {1}.", myObject, Not(myIndex))
        Else
            Console.WriteLine("The object to search for ({0}) is at index " _
               + "{1}.", myObject, myIndex)
        End If
    End Sub
     
    
    Public Shared Sub PrintValues(myArr As Array)
        Dim myEnumerator As System.Collections.IEnumerator = _
           myArr.GetEnumerator()
        Dim i As Integer = 0
        Dim cols As Integer = myArr.GetLength((myArr.Rank - 1))
        While myEnumerator.MoveNext()
            If i < cols Then
                i += 1
            Else
                Console.WriteLine()
                i = 1
            End If
            Console.Write(ControlChars.Tab + "{0}", myEnumerator.Current)
        End While
        Console.WriteLine()
    End Sub
End Class

' This code produces the following output.
' 
' The Int32 array contains the following:
'     0    2    4    6    8
' The object to search for (3) is not found. The next larger object is at index 2.
' The object to search for (6) is at index 3.  

[C#] 
using System;
public class SamplesArray  {

   public static void Main()  {

      // Creates and initializes a new Array.
      Array myIntArray = Array.CreateInstance( typeof(Int32), 5 );
      for ( int i = myIntArray.GetLowerBound(0); i <= myIntArray.GetUpperBound(0); i++ )
         myIntArray.SetValue( i*2, i );

      // Displays the values of the Array.
      Console.WriteLine( "The Int32 array contains the following:" );
      PrintValues( myIntArray );

      // Locates a specific object that does not exist in the Array.
      Object myObjectOdd = 3;
      FindMyObject( myIntArray, myObjectOdd );

      // Locates an object that exists in the Array.
      Object myObjectEven = 6;
      FindMyObject( myIntArray, myObjectEven );
   }

   public static void FindMyObject( Array myArr, Object myObject )  {
      int myIndex=Array.BinarySearch( myArr, myObject );
      if ( myIndex < 0 )
         Console.WriteLine( "The object to search for ({0}) is not found. The next larger object is at index {1}.", myObject, ~myIndex );
      else
         Console.WriteLine( "The object to search for ({0}) is at index {1}.", myObject, myIndex );
   }


   public static void PrintValues( Array myArr )  {
      System.Collections.IEnumerator myEnumerator = myArr.GetEnumerator();
      int i = 0;
      int cols = myArr.GetLength( myArr.Rank - 1 );
      while ( myEnumerator.MoveNext() )  {
         if ( i < cols )  {
            i++;
         } else  {
            Console.WriteLine();
            i = 1;
         }
         Console.Write( "\t{0}", myEnumerator.Current );
      }
      Console.WriteLine();
   }
}
/* 
This code produces the following output.

The Int32 array contains the following:
    0    2    4    6    8
The object to search for (3) is not found. The next larger object is at index 2.
The object to search for (6) is at index 3.
 */

[C++] 
#using <mscorlib.dll>
using namespace System;

void FindMyObject( Array* myArr, Object* myObject );
void PrintValues( Array* myArr );

void main()  {
 
   // Creates and initializes a new Array instance.
   Array* myIntArray = Array::CreateInstance( __typeof(Int32), 5 );

   for ( int i = myIntArray->GetLowerBound(0); i <= myIntArray->GetUpperBound(0); i++ )
       myIntArray->SetValue( __box(i*2), i );
 
   // Displays the values of the Array.
   Console::WriteLine( "The Int32 array contains the following:" );
   PrintValues( myIntArray );
 
   // Locates a specific object that does not exist in the Array.
   Object* myObjectOdd = __box(3);
   FindMyObject( myIntArray, myObjectOdd );
 
   // Locates an object that exists in the Array.
   Object* myObjectEven = __box(6);
   FindMyObject( myIntArray, myObjectEven );
}
 
void FindMyObject( Array* myArr, Object* myObject )  {

   int myIndex = Array::BinarySearch( myArr, myObject );

   if ( myIndex < 0 )
    Console::WriteLine( "The object to search for ({0}) is not found. The next larger object is at index {1}.", myObject, __box(~myIndex) );
   else
    Console::WriteLine( "The object to search for ({0}) is at index {1}.", myObject, __box(myIndex) );
}
 
 
void PrintValues( Array* myArr )  {
   System::Collections::IEnumerator* myEnumerator = myArr->GetEnumerator();
   int i = 0;
   int cols = myArr->GetLength( myArr->Rank - 1 );
   while ( myEnumerator->MoveNext() )  {
    if ( i < cols )  {
        i++;
    } 
    else {
        Console::WriteLine();
        i = 1;
    }
    Console::Write( "\t{0}", myEnumerator->Current );
   }
   Console::WriteLine();
}

 /* 
 This code produces the following output.
 
 The Int32 array contains the following:
     0    2    4    6    8
 The object to search for (3) is not found. The next larger object is at index 2.
 The object to search for (6) is at index 3.
  */

[JScript] 
import System
import System.Collections

// Creates and initializes a new Array.
var myIntArray : System.Array = System.Array.CreateInstance( Int32, 5);

for ( var i : int = myIntArray.GetLowerBound(0); i <= myIntArray.GetUpperBound(0); i++ )
    myIntArray.SetValue( Int32(i*2), i );

// Displays the values of the Array.
Console.WriteLine( "The Int32 array contains the following:" );
PrintValues( myIntArray );

// Locates a specific object that does not exist in the Array.
var myObjectOdd : Object  = 3;
FindMyObject( myIntArray, myObjectOdd );

// Locates an object that exists in the Array.
var myObjectEven : Object  = 6;
FindMyObject( myIntArray, myObjectEven );


function FindMyObject( myArr : System.Array, myObject : Object)  {

    var myIndex : int = System.Array.BinarySearch( myArr, myObject );

    if ( myIndex < 0 )
        Console.WriteLine( "The object to search for ({0}) is not found. " + 
                "The next larger object is at index {1}.", myObject, ~myIndex );
    else
        Console.WriteLine( "The object to search for ({0}) is at index {1}.", myObject, myIndex );
}

function PrintValues( myArr : System.Array )  {
    var arrEnum : IEnumerator = myArr.GetEnumerator();
    arrEnum.Reset();

    while (arrEnum.MoveNext()) {            

        Console.Write( "{0,-6}", arrEnum.Current.ToString());
    }

    Console.WriteLine();

}
 /* 
 This code produces the following output.
 
 The Int32 array contains the following:
     0    2    4    6    8
 The object to search for (3) is not found. The next larger object is at index 2.
 The object to search for (6) is at index 3.
  */

See Also

Array Class | Array Members | System Namespace

Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft