System Namespace Array Class
Searches a one-dimensional sorted Array for a value, using a binary search algorithm.
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.
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.
*/
Array Members
|
|