asp.net.ph

Array.BinarySearch Method

System Namespace   Array Class


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

Overload List

1. 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.

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

3. 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.

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


Example

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

NOTE: This example shows how to use one of the overloaded versions of BinarySearch. For other examples that might be available, see the individual overload topics.

[ VB ] 
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.
        Response.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
            Response.WriteLine ( "The object to search for ( {0} ) is not found. " _
               + "The next larger object is at index {1}.", myObject, Not ( myIndex ) ) 
        Else
            Response.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
                Response.WriteLine ( ) 
                i = 1
            End If
            Response.Write ( ControlChars.Tab + "{0}", myEnumerator.Current ) 
        End While
        Response.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.
      Response.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 ) 
         Response.WriteLine ( "The object to search for ( {0} ) is not found. The next larger object is at index {1}.", myObject, ~myIndex );
      else
         Response.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  {
            Response.WriteLine ( );
            i = 1;
         }
         Response.Write ( "\t{0}", myEnumerator.Current );
      }
      Response.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.
Response.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 ) 
        Response.WriteLine ( "The object to search for ( {0} ) is not found. " + 
                "The next larger object is at index {1}.", myObject, ~myIndex );
    else
        Response.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 ( ) ) {            

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

    Response.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 Members Skip Navigation Links




Home
Suggested Reading


Previous page Back to top Next page

© 2000-2010 Rey Nuñez All rights reserved.

If you have any question, comment or suggestion
about this site, please send us a note

You can help support asp.net.ph