Array.BinarySearch Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Zoekt in een eendimensionale sortering Array naar een waarde met behulp van een binair zoekalgoritmen.
Overloads
| Name | Description |
|---|---|
| BinarySearch(Array, Object) |
Zoekt in een hele eendimensionale gesorteerde matrix naar een specifiek element, met behulp van de IComparable interface die wordt geïmplementeerd door elk element van de matrix en door het opgegeven object. |
| BinarySearch(Array, Object, IComparer) |
Zoekt in een hele eendimensionale gesorteerde matrix naar een waarde met behulp van de opgegeven IComparer interface. |
| BinarySearch(Array, Int32, Int32, Object) |
Zoekt in een bereik met elementen in een eendimensionale gesorteerde matrix voor een waarde, met behulp van de IComparable interface die wordt geïmplementeerd door elk element van de matrix en door de opgegeven waarde. |
| BinarySearch(Array, Int32, Int32, Object, IComparer) |
Zoekt in een bereik met elementen in een eendimensionale gesorteerde matrix naar een waarde met behulp van de opgegeven IComparer interface. |
| BinarySearch<T>(T[], T) |
Zoekt in een hele eendimensionale gesorteerde matrix naar een specifiek element met behulp van de IComparable<T> algemene interface die wordt geïmplementeerd door elk element van het Array en het opgegeven object. |
| BinarySearch<T>(T[], T, IComparer<T>) |
Zoekt in een hele eendimensionale gesorteerde matrix naar een waarde met behulp van de opgegeven IComparer<T> algemene interface. |
| BinarySearch<T>(T[], Int32, Int32, T) |
Zoekt in een bereik met elementen in een eendimensionale gesorteerde matrix naar een waarde met behulp van de IComparable<T> algemene interface die wordt geïmplementeerd door elk element van de Array en de opgegeven waarde. |
| BinarySearch<T>(T[], Int32, Int32, T, IComparer<T>) |
Zoekt in een bereik met elementen in een eendimensionale gesorteerde matrix naar een waarde met behulp van de opgegeven IComparer<T> algemene interface. |
BinarySearch(Array, Object)
- Bron:
- Array.cs
- Bron:
- Array.cs
- Bron:
- Array.cs
- Bron:
- Array.cs
- Bron:
- Array.cs
Zoekt in een hele eendimensionale gesorteerde matrix naar een specifiek element, met behulp van de IComparable interface die wordt geïmplementeerd door elk element van de matrix en door het opgegeven object.
public:
static int BinarySearch(Array ^ array, System::Object ^ value);
public static int BinarySearch(Array array, object value);
public static int BinarySearch(Array array, object? value);
static member BinarySearch : Array * obj -> int
Public Shared Function BinarySearch (array As Array, value As Object) As Integer
Parameters
- value
- Object
Het object waarnaar moet worden gezocht.
Retouren
De index van de opgegeven in de opgegeven valuearray, indien value gevonden; anders een negatief getal. Als value deze niet wordt gevonden en value kleiner is dan een of meer elementen, arrayis het negatieve getal dat wordt geretourneerd het bitsgewijze complement van de index van het eerste element dat groter is dan value. Als value deze niet wordt gevonden en value groter is dan alle elementen, arrayis het negatieve getal dat wordt geretourneerd het bitsgewijze complement van (de index van het laatste element plus 1). Als deze methode wordt aangeroepen met een niet-gesorteerde arraywaarde, kan de retourwaarde onjuist zijn en kan een negatief getal worden geretourneerd, zelfs als value deze aanwezig is in array.
Uitzonderingen
array is null.
array is multidimensionaal.
value is van een type dat niet compatibel is met de elementen van array.
value implementeert de IComparable interface niet en de zoekfunctie ondervindt een element dat de IComparable interface niet implementeert.
Voorbeelden
In het volgende codevoorbeeld ziet u hoe u BinarySearch een specifiek object in een Arrayobject kunt vinden.
Note
De matrix wordt gemaakt met de bijbehorende elementen in oplopende sorteervolgorde. Voor BinarySearch de methode moet de matrix in oplopende volgorde worden gesorteerd.
open System
let printValues (myArray: Array) =
let mutable i = 0
let cols = myArray.GetLength(myArray.Rank - 1)
for item in myArray do
if i < cols then
i <- i + 1
else
printfn ""
i <- 1;
printf $"\t{item}"
printfn ""
let findMyObject (myArr: Array) (myObject: obj) =
let myIndex = Array.BinarySearch(myArr, myObject)
if myIndex < 0 then
printfn $"The object to search for ({myObject}) is not found. The next larger object is at index {~~~myIndex}."
else
printfn $"The object to search for ({myObject}) is at index {myIndex}."
// Creates and initializes a new Array.
let myIntArray = [| 8; 2; 6; 3; 7 |]
// Do the required sort first
Array.Sort myIntArray
// Displays the values of the Array.
printfn "The int array contains the following:"
printValues myIntArray
// Locates a specific object that does not exist in the Array.
let myObjectOdd: obj = 1
findMyObject myIntArray myObjectOdd
// Locates an object that exists in the Array.
let myObjectEven: obj = 6
findMyObject myIntArray myObjectEven
// This code produces the following output:
// The int array contains the following:
// 2 3 6 7 8
// The object to search for (1) is not found. The next larger object is at index 0.
// The object to search for (6) is at index 2.
using System;
public class SamplesArray
{
public static void Main()
{
// Creates and initializes a new Array.
Array myIntArray = Array.CreateInstance(typeof(int), 5);
myIntArray.SetValue(8, 0);
myIntArray.SetValue(2, 1);
myIntArray.SetValue(6, 2);
myIntArray.SetValue(3, 3);
myIntArray.SetValue(7, 4);
// Do the required sort first
Array.Sort(myIntArray);
// Displays the values of the Array.
Console.WriteLine( "The int array contains the following:" );
PrintValues(myIntArray);
// Locates a specific object that does not exist in the Array.
object myObjectOdd = 1;
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)
{
int i = 0;
int cols = myArr.GetLength(myArr.Rank - 1);
foreach (object o in myArr)
{
if ( i < cols )
{
i++;
}
else
{
Console.WriteLine();
i = 1;
}
Console.Write( "\t{0}", o);
}
Console.WriteLine();
}
}
// This code produces the following output.
//
//The int array contains the following:
// 2 3 6 7 8
//The object to search for (1) is not found. The next larger object is at index 0
//
//The object to search for (6) is at index 2.
Public Class SamplesArray
Public Shared Sub Main()
' Creates and initializes a new Array.
Dim myIntArray As Array = Array.CreateInstance( GetType(Int32), 5 )
myIntArray.SetValue( 8, 0 )
myIntArray.SetValue( 2, 1 )
myIntArray.SetValue( 6, 2 )
myIntArray.SetValue( 3, 3 )
myIntArray.SetValue( 7, 4 )
' Do the required sort first
Array.Sort(myIntArray)
' 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 = 1
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 i As Integer = 0
Dim cols As Integer = myArr.GetLength( myArr.Rank - 1 )
For Each o As Object In myArr
If i < cols Then
i += 1
Else
Console.WriteLine()
i = 1
End If
Console.Write( vbTab + "{0}", o)
Next o
Console.WriteLine()
End Sub
End Class
' This code produces the following output.
'
' The Int32 array contains the following:
' 2 3 6 7 8
' The object to search for (1) is not found. The next larger object is at index 0
'
' The object to search for (6) is at index 2.
Opmerkingen
Deze methode biedt geen ondersteuning voor het zoeken van matrices die negatieve indexen bevatten.
array moet worden gesorteerd voordat u deze methode aanroept.
Als de Array opgegeven waarde niet bevat, retourneert de methode een negatief geheel getal. U kunt de operator bitwise complement (~ in C#, Not in Visual Basic) toepassen op het negatieve resultaat om een index te produceren. Als deze index groter is dan de bovengrens van de matrix, zijn er geen elementen groter dan value in de matrix. Anders is het de index van het eerste element dat groter is dan value.
Of value elk element van array moet de IComparable interface implementeren, die wordt gebruikt voor vergelijkingen. De elementen van moeten al in toenemende waarde worden gesorteerd op basis van array de sorteervolgorde die door de IComparable implementatie is gedefinieerd. Anders kan het resultaat onjuist zijn.
Note
Alsvalue de IComparable interface niet wordt geïmplementeerd, worden de elementen van array de interface niet getest IComparable voordat de zoekopdracht begint. Er wordt een uitzondering gegenereerd als de zoekopdracht een element tegenkomt dat niet wordt geïmplementeerd IComparable.
Dubbele elementen zijn toegestaan. Als het Array meer dan één element bevat dat gelijk is aan value, retourneert de methode de index van slechts één van de exemplaren en niet noodzakelijkerwijs de eerste.
null kan altijd worden vergeleken met elk ander referentietype; Daarom genereren vergelijkingen met null geen uitzondering.
Note
Voor elk getest element wordt value de juiste IComparable implementatie doorgegeven, zelfs als value dat het geval is null. Dat wil gezegd, de IComparable implementatie bepaalt hoe een bepaald element zich verhoudt tot null.
Deze methode is een O(log n)-bewerking, waarbij n de Length van array.
Zie ook
Van toepassing op
BinarySearch(Array, Object, IComparer)
- Bron:
- Array.cs
- Bron:
- Array.cs
- Bron:
- Array.cs
- Bron:
- Array.cs
- Bron:
- Array.cs
Zoekt in een hele eendimensionale gesorteerde matrix naar een waarde met behulp van de opgegeven IComparer interface.
public:
static int BinarySearch(Array ^ array, System::Object ^ value, System::Collections::IComparer ^ comparer);
public static int BinarySearch(Array array, object value, System.Collections.IComparer comparer);
public static int BinarySearch(Array array, object? value, System.Collections.IComparer? comparer);
static member BinarySearch : Array * obj * System.Collections.IComparer -> int
Public Shared Function BinarySearch (array As Array, value As Object, comparer As IComparer) As Integer
Parameters
- value
- Object
Het object waarnaar moet worden gezocht.
- comparer
- IComparer
De IComparer implementatie die moet worden gebruikt bij het vergelijken van elementen.
– of –
null om de IComparable implementatie van elk element te gebruiken.
Retouren
De index van de opgegeven in de opgegeven valuearray, indien value gevonden; anders een negatief getal. Als value deze niet wordt gevonden en value kleiner is dan een of meer elementen, arrayis het negatieve getal dat wordt geretourneerd het bitsgewijze complement van de index van het eerste element dat groter is dan value. Als value deze niet wordt gevonden en value groter is dan alle elementen, arrayis het negatieve getal dat wordt geretourneerd het bitsgewijze complement van (de index van het laatste element plus 1). Als deze methode wordt aangeroepen met een niet-gesorteerde arraywaarde, kan de retourwaarde onjuist zijn en kan een negatief getal worden geretourneerd, zelfs als value deze aanwezig is in array.
Uitzonderingen
array is null.
array is multidimensionaal.
comparer is null, en value is van een type dat niet compatibel is met de elementen van array.
comparer is null, value implementeert de IComparable interface niet en de zoekfunctie ondervindt een element dat de IComparable interface niet implementeert.
Opmerkingen
Deze methode biedt geen ondersteuning voor het zoeken van matrices die negatieve indexen bevatten.
array moet worden gesorteerd voordat u deze methode aanroept.
Als de Array opgegeven waarde niet bevat, retourneert de methode een negatief geheel getal. U kunt de operator bitwise complement (~ in C#, Not in Visual Basic) toepassen op het negatieve resultaat om een index te produceren. Als deze index groter is dan de bovengrens van de matrix, zijn er geen elementen groter dan value in de matrix. Anders is het de index van het eerste element dat groter is dan value.
De vergelijkingsfunctie past aan hoe de elementen worden vergeleken. U kunt bijvoorbeeld een System.Collections.CaseInsensitiveComparer als vergelijkingsfunctie gebruiken om hoofdlettergevoelige tekenreekszoekopdrachten uit te voeren.
Als comparer dat niet nullhet is, worden de elementen array vergeleken met de opgegeven waarde met behulp van de opgegeven IComparer implementatie. De elementen van array moeten al worden gesorteerd in toenemende waarde volgens de sorteervolgorde die is gedefinieerd door comparer; anders kan het resultaat onjuist zijn.
Alscomparer dat het is null, wordt de vergelijking uitgevoerd met behulp van de IComparable implementatie die wordt geleverd door het element zelf of door de opgegeven waarde. De elementen van moeten al in toenemende waarde worden gesorteerd op basis van array de sorteervolgorde die door de IComparable implementatie is gedefinieerd. Anders kan het resultaat onjuist zijn.
Note
Als comparer dat het geval is null en value de IComparable interface niet implementeert, worden de elementen van array niet getest voordat IComparable de zoekopdracht begint. Er wordt een uitzondering gegenereerd als de zoekopdracht een element tegenkomt dat niet wordt geïmplementeerd IComparable.
Dubbele elementen zijn toegestaan. Als het Array meer dan één element bevat dat gelijk is aan value, retourneert de methode de index van slechts één van de exemplaren en niet noodzakelijkerwijs de eerste.
null kan altijd worden vergeleken met elk ander referentietype; Daarom genereren vergelijkingen met null geen uitzondering.
Note
Voor elk getest element wordt value de juiste IComparable implementatie doorgegeven, zelfs als value dat het geval is null. Dat wil gezegd, de IComparable implementatie bepaalt hoe een bepaald element zich verhoudt tot null.
Deze methode is een O(log n)-bewerking, waarbij n de Length van array.
Zie ook
Van toepassing op
BinarySearch(Array, Int32, Int32, Object)
- Bron:
- Array.cs
- Bron:
- Array.cs
- Bron:
- Array.cs
- Bron:
- Array.cs
- Bron:
- Array.cs
Zoekt in een bereik met elementen in een eendimensionale gesorteerde matrix voor een waarde, met behulp van de IComparable interface die wordt geïmplementeerd door elk element van de matrix en door de opgegeven waarde.
public:
static int BinarySearch(Array ^ array, int index, int length, System::Object ^ value);
public static int BinarySearch(Array array, int index, int length, object value);
public static int BinarySearch(Array array, int index, int length, object? value);
static member BinarySearch : Array * int * int * obj -> int
Public Shared Function BinarySearch (array As Array, index As Integer, length As Integer, value As Object) As Integer
Parameters
- index
- Int32
De beginindex van het bereik om te zoeken.
- length
- Int32
De lengte van het bereik om te zoeken.
- value
- Object
Het object waarnaar moet worden gezocht.
Retouren
De index van de opgegeven in de opgegeven valuearray, indien value gevonden; anders een negatief getal. Als value deze niet wordt gevonden en value kleiner is dan een of meer elementen, arrayis het negatieve getal dat wordt geretourneerd het bitsgewijze complement van de index van het eerste element dat groter is dan value. Als value deze niet wordt gevonden en value groter is dan alle elementen, arrayis het negatieve getal dat wordt geretourneerd het bitsgewijze complement van (de index van het laatste element plus 1). Als deze methode wordt aangeroepen met een niet-gesorteerde arraywaarde, kan de retourwaarde onjuist zijn en kan een negatief getal worden geretourneerd, zelfs als value deze aanwezig is in array.
Uitzonderingen
array is null.
array is multidimensionaal.
index is kleiner dan de ondergrens van array.
– of –
length is kleiner dan nul.
index en length geef geen geldig bereik op in array.
– of –
value is van een type dat niet compatibel is met de elementen van array.
value implementeert de IComparable interface niet en de zoekfunctie ondervindt een element dat de IComparable interface niet implementeert.
Opmerkingen
Deze methode biedt geen ondersteuning voor het zoeken van matrices die negatieve indexen bevatten.
array moet worden gesorteerd voordat u deze methode aanroept.
Als de Array opgegeven waarde niet bevat, retourneert de methode een negatief geheel getal. U kunt de operator bitwise complement (~ in C#, Not in Visual Basic) toepassen op het negatieve resultaat om een index te produceren. Als deze index groter is dan de bovengrens van de matrix, zijn er geen elementen groter dan value in de matrix. Anders is het de index van het eerste element dat groter is dan value.
Of value elk element van array moet de IComparable interface implementeren, die wordt gebruikt voor vergelijkingen. De elementen van moeten al in toenemende waarde worden gesorteerd op basis van array de sorteervolgorde die door de IComparable implementatie is gedefinieerd. Anders kan het resultaat onjuist zijn.
Note
Als value de IComparable interface niet wordt geïmplementeerd, worden de elementen van array de interface niet getest IComparable voordat de zoekopdracht begint. Er wordt een uitzondering gegenereerd als de zoekopdracht een element tegenkomt dat niet wordt geïmplementeerd IComparable.
Dubbele elementen zijn toegestaan. Als het Array meer dan één element bevat dat gelijk is aan value, retourneert de methode de index van slechts één van de exemplaren en niet noodzakelijkerwijs de eerste.
null kan altijd worden vergeleken met elk ander referentietype; Daarom genereren vergelijkingen met null geen uitzondering.
Note
Voor elk getest element wordt value de juiste IComparable implementatie doorgegeven, zelfs als value dat het geval is null. Dat wil gezegd, de IComparable implementatie bepaalt hoe een bepaald element zich verhoudt tot null.
Deze methode is een O(log)-nbewerking, waarbij n .length
Zie ook
Van toepassing op
BinarySearch(Array, Int32, Int32, Object, IComparer)
- Bron:
- Array.cs
- Bron:
- Array.cs
- Bron:
- Array.cs
- Bron:
- Array.cs
- Bron:
- Array.cs
Zoekt in een bereik met elementen in een eendimensionale gesorteerde matrix naar een waarde met behulp van de opgegeven IComparer interface.
public:
static int BinarySearch(Array ^ array, int index, int length, System::Object ^ value, System::Collections::IComparer ^ comparer);
public static int BinarySearch(Array array, int index, int length, object value, System.Collections.IComparer comparer);
public static int BinarySearch(Array array, int index, int length, object? value, System.Collections.IComparer? comparer);
static member BinarySearch : Array * int * int * obj * System.Collections.IComparer -> int
Public Shared Function BinarySearch (array As Array, index As Integer, length As Integer, value As Object, comparer As IComparer) As Integer
Parameters
- index
- Int32
De beginindex van het bereik om te zoeken.
- length
- Int32
De lengte van het bereik om te zoeken.
- value
- Object
Het object waarnaar moet worden gezocht.
- comparer
- IComparer
De IComparer implementatie die moet worden gebruikt bij het vergelijken van elementen.
– of –
null om de IComparable implementatie van elk element te gebruiken.
Retouren
De index van de opgegeven in de opgegeven valuearray, indien value gevonden; anders een negatief getal. Als value deze niet wordt gevonden en value kleiner is dan een of meer elementen, arrayis het negatieve getal dat wordt geretourneerd het bitsgewijze complement van de index van het eerste element dat groter is dan value. Als value deze niet wordt gevonden en value groter is dan alle elementen, arrayis het negatieve getal dat wordt geretourneerd het bitsgewijze complement van (de index van het laatste element plus 1). Als deze methode wordt aangeroepen met een niet-gesorteerde arraywaarde, kan de retourwaarde onjuist zijn en kan een negatief getal worden geretourneerd, zelfs als value deze aanwezig is in array.
Uitzonderingen
array is null.
array is multidimensionaal.
index is kleiner dan de ondergrens van array.
– of –
length is kleiner dan nul.
index en length geef geen geldig bereik op in array.
– of –
comparer is null, en value is van een type dat niet compatibel is met de elementen van array.
comparer is null, value implementeert de IComparable interface niet en de zoekfunctie ondervindt een element dat de IComparable interface niet implementeert.
Opmerkingen
Deze methode biedt geen ondersteuning voor het zoeken van matrices die negatieve indexen bevatten.
array moet worden gesorteerd voordat u deze methode aanroept.
Als de Array opgegeven waarde niet bevat, retourneert de methode een negatief geheel getal. U kunt de operator bitwise complement (~ in C#, Not in Visual Basic) toepassen op het negatieve resultaat om een index te produceren. Als deze index groter is dan de bovengrens van de matrix, zijn er geen elementen groter dan value in de matrix. Anders is het de index van het eerste element dat groter is dan value.
De vergelijkingsfunctie past aan hoe de elementen worden vergeleken. U kunt bijvoorbeeld een System.Collections.CaseInsensitiveComparer als vergelijkingsfunctie gebruiken om hoofdlettergevoelige tekenreekszoekopdrachten uit te voeren.
Als comparer dat niet nullhet is, worden de elementen array vergeleken met de opgegeven waarde met behulp van de opgegeven IComparer implementatie. De elementen van array moeten al worden gesorteerd in toenemende waarde volgens de sorteervolgorde die is gedefinieerd door comparer; anders kan het resultaat onjuist zijn.
Als comparer dat het is null, wordt de vergelijking uitgevoerd met behulp van de IComparable implementatie die wordt geleverd door het element zelf of door de opgegeven waarde. De elementen van moeten al in toenemende waarde worden gesorteerd op basis van array de sorteervolgorde die door de IComparable implementatie is gedefinieerd. Anders kan het resultaat onjuist zijn.
Note
Als comparer dat het geval is null en value de IComparable interface niet implementeert, worden de elementen van array niet getest voordat IComparable de zoekopdracht begint. Er wordt een uitzondering gegenereerd als de zoekopdracht een element tegenkomt dat niet wordt geïmplementeerd IComparable.
Dubbele elementen zijn toegestaan. Als het Array meer dan één element bevat dat gelijk is aan value, retourneert de methode de index van slechts één van de exemplaren en niet noodzakelijkerwijs de eerste.
null kan altijd worden vergeleken met elk ander referentietype; daarom genereren vergelijkingen met null geen uitzondering bij gebruik IComparable.
Note
Voor elk getest element wordt value de juiste IComparable implementatie doorgegeven, zelfs als value dat het geval is null. Dat wil gezegd, de IComparable implementatie bepaalt hoe een bepaald element zich verhoudt tot null.
Deze methode is een O(log)-nbewerking, waarbij n .length
Zie ook
Van toepassing op
BinarySearch<T>(T[], T)
- Bron:
- Array.cs
- Bron:
- Array.cs
- Bron:
- Array.cs
- Bron:
- Array.cs
- Bron:
- Array.cs
Zoekt in een hele eendimensionale gesorteerde matrix naar een specifiek element met behulp van de IComparable<T> algemene interface die wordt geïmplementeerd door elk element van het Array en het opgegeven object.
public:
generic <typename T>
static int BinarySearch(cli::array <T> ^ array, T value);
public static int BinarySearch<T>(T[] array, T value);
static member BinarySearch : 'T[] * 'T -> int
Public Shared Function BinarySearch(Of T) (array As T(), value As T) As Integer
Type parameters
- T
Het type van de elementen van de matrix.
Parameters
- array
- T[]
De gesorteerde eendimensionale, op nul gebaseerde Array zoekopdrachten.
- value
- T
Het object waarnaar moet worden gezocht.
Retouren
De index van de opgegeven in de opgegeven valuearray, indien value gevonden; anders een negatief getal. Als value deze niet wordt gevonden en value kleiner is dan een of meer elementen, arrayis het negatieve getal dat wordt geretourneerd het bitsgewijze complement van de index van het eerste element dat groter is dan value. Als value deze niet wordt gevonden en value groter is dan alle elementen, arrayis het negatieve getal dat wordt geretourneerd het bitsgewijze complement van (de index van het laatste element plus 1). Als deze methode wordt aangeroepen met een niet-gesorteerde arraywaarde, kan de retourwaarde onjuist zijn en kan een negatief getal worden geretourneerd, zelfs als value deze aanwezig is in array.
Uitzonderingen
array is null.
T implementeert de IComparable<T> algemene interface niet.
Voorbeelden
In het volgende codevoorbeeld ziet u de algemene overbelasting van de Sort<T>(T[]) methode en de algemene overbelasting van de BinarySearch<T>(T[], T) methode. Er wordt een matrix met tekenreeksen gemaakt, in geen bepaalde volgorde.
De matrix wordt weergegeven, gesorteerd en opnieuw weergegeven. Matrices moeten worden gesorteerd om de BinarySearch methode te kunnen gebruiken.
Note
De aanroepen naar de Sort en BinarySearch algemene methoden zien er niet anders uit dan aanroepen naar hun niet-generische tegenhangers, omdat Visual Basic, F#, C# en C++ het type van de algemene parameter afleiden van het type van het eerste argument. Als u de Ildasm.exe (IL Disassembler) gebruikt om de Microsoft tussentaal (MSIL) te onderzoeken, kunt u zien dat de algemene methoden worden aangeroepen.
De BinarySearch<T>(T[], T) algemene overbelasting van de methode wordt vervolgens gebruikt om te zoeken naar twee tekenreeksen, een tekenreeks die zich niet in de matrix bevindt en een tekenreeks. De matrix en de retourwaarde van de BinarySearch methode worden doorgegeven aan de ShowWhere algemene methode (de showWhere functie in het F#-voorbeeld), die de indexwaarde weergeeft als de tekenreeks wordt gevonden en anders vallen de elementen tussen de zoekreeks als deze zich in de matrix bevinden. De index is negatief als de tekenreeks zich niet in de matrix bevindt, dus de methode ShowWhere gebruikt de bitwise complement (de ~-operator in C#, de operator ~~~ in F#, Xor-1 in Visual Basic) om de index van het eerste element in de lijst te verkrijgen dat groter is dan de zoektekenreeks.
using System;
using System.Collections.Generic;
public class Example
{
public static void Main()
{
string[] dinosaurs = {"Pachycephalosaurus",
"Amargasaurus",
"Tyrannosaurus",
"Mamenchisaurus",
"Deinonychus",
"Edmontosaurus"};
Console.WriteLine();
foreach( string dinosaur in dinosaurs )
{
Console.WriteLine(dinosaur);
}
Console.WriteLine("\nSort");
Array.Sort(dinosaurs);
Console.WriteLine();
foreach( string dinosaur in dinosaurs )
{
Console.WriteLine(dinosaur);
}
Console.WriteLine("\nBinarySearch for 'Coelophysis':");
int index = Array.BinarySearch(dinosaurs, "Coelophysis");
ShowWhere(dinosaurs, index);
Console.WriteLine("\nBinarySearch for 'Tyrannosaurus':");
index = Array.BinarySearch(dinosaurs, "Tyrannosaurus");
ShowWhere(dinosaurs, index);
}
private static void ShowWhere<T>(T[] array, int index)
{
if (index<0)
{
// If the index is negative, it represents the bitwise
// complement of the next larger element in the array.
//
index = ~index;
Console.Write("Not found. Sorts between: ");
if (index == 0)
Console.Write("beginning of array and ");
else
Console.Write("{0} and ", array[index-1]);
if (index == array.Length)
Console.WriteLine("end of array.");
else
Console.WriteLine("{0}.", array[index]);
}
else
{
Console.WriteLine("Found at index {0}.", index);
}
}
}
/* This code example produces the following output:
Pachycephalosaurus
Amargasaurus
Tyrannosaurus
Mamenchisaurus
Deinonychus
Edmontosaurus
Sort
Amargasaurus
Deinonychus
Edmontosaurus
Mamenchisaurus
Pachycephalosaurus
Tyrannosaurus
BinarySearch for 'Coelophysis':
Not found. Sorts between: Amargasaurus and Deinonychus.
BinarySearch for 'Tyrannosaurus':
Found at index 5.
*/
open System
let showWhere (array: 'a []) index =
if index < 0 then
// If the index is negative, it represents the bitwise
// complement of the next larger element in the array.
let index = ~~~index
printf "Not found. Sorts between: "
if index = 0 then
printf "beginning of array and "
else
printf $"{array[index - 1]} and "
if index = array.Length then
printfn "end of array."
else
printfn $"{array[index]}."
else
printfn $"Found at index {index}."
let dinosaurs =
[| "Pachycephalosaurus"
"Amargasaurus"
"Tyrannosaurus"
"Mamenchisaurus"
"Deinonychus"
"Edmontosaurus" |]
printfn ""
for dino in dinosaurs do
printfn $"{dino}"
printfn "\nSort"
Array.Sort dinosaurs
printfn ""
for dino in dinosaurs do
printfn $"{dino}"
printfn "\nBinarySearch for 'Coelophysis':"
let index = Array.BinarySearch(dinosaurs, "Coelophysis")
showWhere dinosaurs index
printfn "\nBinarySearch for 'Tyrannosaurus':"
Array.BinarySearch(dinosaurs, "Tyrannosaurus")
|> showWhere dinosaurs
// This code example produces the following output:
//
// Pachycephalosaurus
// Amargasaurus
// Tyrannosaurus
// Mamenchisaurus
// Deinonychus
// Edmontosaurus
//
// Sort
//
// Amargasaurus
// Deinonychus
// Edmontosaurus
// Mamenchisaurus
// Pachycephalosaurus
// Tyrannosaurus
//
// BinarySearch for 'Coelophysis':
// Not found. Sorts between: Amargasaurus and Deinonychus.
//
// BinarySearch for 'Tyrannosaurus':
// Found at index 5.
Imports System.Collections.Generic
Public Class Example
Public Shared Sub Main()
Dim dinosaurs() As String = { _
"Pachycephalosaurus", _
"Amargasaurus", _
"Tyrannosaurus", _
"Mamenchisaurus", _
"Deinonychus", _
"Edmontosaurus" }
Console.WriteLine()
For Each dinosaur As String In dinosaurs
Console.WriteLine(dinosaur)
Next
Console.WriteLine(vbLf & "Sort")
Array.Sort(dinosaurs)
Console.WriteLine()
For Each dinosaur As String In dinosaurs
Console.WriteLine(dinosaur)
Next
Console.WriteLine(vbLf & _
"BinarySearch for 'Coelophysis':")
Dim index As Integer = _
Array.BinarySearch(dinosaurs, "Coelophysis")
ShowWhere(dinosaurs, index)
Console.WriteLine(vbLf & _
"BinarySearch for 'Tyrannosaurus':")
index = Array.BinarySearch(dinosaurs, "Tyrannosaurus")
ShowWhere(dinosaurs, index)
End Sub
Private Shared Sub ShowWhere(Of T) _
(ByVal array() As T, ByVal index As Integer)
If index < 0 Then
' If the index is negative, it represents the bitwise
' complement of the next larger element in the array.
'
index = index Xor -1
Console.Write("Not found. Sorts between: ")
If index = 0 Then
Console.Write("beginning of array and ")
Else
Console.Write("{0} and ", array(index - 1))
End If
If index = array.Length Then
Console.WriteLine("end of array.")
Else
Console.WriteLine("{0}.", array(index))
End If
Else
Console.WriteLine("Found at index {0}.", index)
End If
End Sub
End Class
' This code example produces the following output:
'
'Pachycephalosaurus
'Amargasaurus
'Tyrannosaurus
'Mamenchisaurus
'Deinonychus
'Edmontosaurus
'
'Sort
'
'Amargasaurus
'Deinonychus
'Edmontosaurus
'Mamenchisaurus
'Pachycephalosaurus
'Tyrannosaurus
'
'BinarySearch for 'Coelophysis':
'Not found. Sorts between: Amargasaurus and Deinonychus.
'
'BinarySearch for 'Tyrannosaurus':
'Found at index 5.
Opmerkingen
Deze methode biedt geen ondersteuning voor het zoeken van matrices die negatieve indexen bevatten.
array moet worden gesorteerd voordat u deze methode aanroept.
Als array deze niet de opgegeven waarde bevat, retourneert de methode een negatief geheel getal. U kunt de operator bitwise complement (~ in C#, Not in Visual Basic) toepassen op het negatieve resultaat om een index te produceren. Als deze index gelijk is aan de grootte van de matrix, zijn er geen elementen groter dan value in de matrix. Anders is het de index van het eerste element dat groter is dan value.
T moet de IComparable<T> algemene interface implementeren, die wordt gebruikt voor vergelijkingen. De elementen van moeten al in toenemende waarde worden gesorteerd op basis van array de sorteervolgorde die door de IComparable<T> implementatie is gedefinieerd. Anders kan het resultaat onjuist zijn.
Dubbele elementen zijn toegestaan. Als het Array meer dan één element bevat dat gelijk is aan value, retourneert de methode de index van slechts één van de exemplaren en niet noodzakelijkerwijs de eerste.
null kan altijd worden vergeleken met elk ander referentietype; Daarom genereren vergelijkingen met null geen uitzondering.
Note
Voor elk getest element wordt value de juiste IComparable<T> implementatie doorgegeven, zelfs als value dat het geval is null. Dat wil gezegd, de IComparable<T> implementatie bepaalt hoe een bepaald element zich verhoudt tot null.
Deze methode is een O(log n)-bewerking, waarbij n de Length van array.
Zie ook
Van toepassing op
BinarySearch<T>(T[], T, IComparer<T>)
- Bron:
- Array.cs
- Bron:
- Array.cs
- Bron:
- Array.cs
- Bron:
- Array.cs
- Bron:
- Array.cs
Zoekt in een hele eendimensionale gesorteerde matrix naar een waarde met behulp van de opgegeven IComparer<T> algemene interface.
public:
generic <typename T>
static int BinarySearch(cli::array <T> ^ array, T value, System::Collections::Generic::IComparer<T> ^ comparer);
public static int BinarySearch<T>(T[] array, T value, System.Collections.Generic.IComparer<T> comparer);
public static int BinarySearch<T>(T[] array, T value, System.Collections.Generic.IComparer<T>? comparer);
static member BinarySearch : 'T[] * 'T * System.Collections.Generic.IComparer<'T> -> int
Public Shared Function BinarySearch(Of T) (array As T(), value As T, comparer As IComparer(Of T)) As Integer
Type parameters
- T
Het type van de elementen van de matrix.
Parameters
- array
- T[]
De gesorteerde eendimensionale, op nul gebaseerde Array zoekopdrachten.
- value
- T
Het object waarnaar moet worden gezocht.
- comparer
- IComparer<T>
De IComparer<T> implementatie die moet worden gebruikt bij het vergelijken van elementen.
– of –
null om de IComparable<T> implementatie van elk element te gebruiken.
Retouren
De index van de opgegeven in de opgegeven valuearray, indien value gevonden; anders een negatief getal. Als value deze niet wordt gevonden en value kleiner is dan een of meer elementen, arrayis het negatieve getal dat wordt geretourneerd het bitsgewijze complement van de index van het eerste element dat groter is dan value. Als value deze niet wordt gevonden en value groter is dan alle elementen, arrayis het negatieve getal dat wordt geretourneerd het bitsgewijze complement van (de index van het laatste element plus 1). Als deze methode wordt aangeroepen met een niet-gesorteerde arraywaarde, kan de retourwaarde onjuist zijn en kan een negatief getal worden geretourneerd, zelfs als value deze aanwezig is in array.
Uitzonderingen
array is null.
comparer is null, en value is van een type dat niet compatibel is met de elementen van array.
comparer is nullen T implementeert de IComparable<T> algemene interface niet
Voorbeelden
In het volgende voorbeeld ziet u de algemene overbelasting van de Sort<T>(T[], IComparer<T>) methode en de algemene overbelasting van de BinarySearch<T>(T[], T, IComparer<T>) methode.
Het codevoorbeeld definieert een alternatieve vergelijking voor tekenreeksen met de naam ReverseCompare, waarmee de algemene interface IComparer<string> (IComparer(Of String) in Visual Basic) wordt geïmplementeerd. De vergelijkingsfunctie roept de CompareTo(String) methode aan, waarbij de volgorde van de comparands wordt omgedraaid, zodat de tekenreeksen hoog-naar-laag sorteren in plaats van laag-naar-hoog.
De matrix wordt weergegeven, gesorteerd en opnieuw weergegeven. Matrices moeten worden gesorteerd om de BinarySearch methode te kunnen gebruiken.
Note
De aanroepen naar de Sort<T>(T[], IComparer<T>) en BinarySearch<T>(T[], T, IComparer<T>) algemene methoden zien er niet anders uit dan aanroepen naar hun niet-gegenereerde tegenhangers, omdat Visual Basic, C# en C++ het type van de algemene typeparameter afleiden uit het type van het eerste argument. Als u de Ildasm.exe (IL Disassembler) gebruikt om de Microsoft tussentaal (MSIL) te onderzoeken, kunt u zien dat de algemene methoden worden aangeroepen.
De BinarySearch<T>(T[], T, IComparer<T>) algemene overbelasting van de methode wordt vervolgens gebruikt om te zoeken naar twee tekenreeksen, een tekenreeks die zich niet in de matrix bevindt en een tekenreeks. De matrix en de retourwaarde van de BinarySearch<T>(T[], T, IComparer<T>) methode worden doorgegeven aan de ShowWhere algemene methode (de showWhere functie in het F#-voorbeeld), die de indexwaarde weergeeft als de tekenreeks wordt gevonden en anders vallen de elementen tussen de zoekreeks als deze zich in de matrix bevinden. De index is negatief als de tekenreeks niet n de matrix is, dus neemt de methode ShowWhere de bitsgewijze complement (de operator ~ in C#, de operator ~~~ in F#, Xor -1 in Visual Basic) om de index te verkrijgen van het eerste element in de lijst die groter is dan de zoektekenreeks.
using System;
using System.Collections.Generic;
public class ReverseComparer: IComparer<string>
{
public int Compare(string x, string y)
{
// Compare y and x in reverse order.
return y.CompareTo(x);
}
}
public class Example
{
public static void Main()
{
string[] dinosaurs = {"Pachycephalosaurus",
"Amargasaurus",
"Tyrannosaurus",
"Mamenchisaurus",
"Deinonychus",
"Edmontosaurus"};
Console.WriteLine();
foreach( string dinosaur in dinosaurs )
{
Console.WriteLine(dinosaur);
}
ReverseComparer rc = new ReverseComparer();
Console.WriteLine("\nSort");
Array.Sort(dinosaurs, rc);
Console.WriteLine();
foreach( string dinosaur in dinosaurs )
{
Console.WriteLine(dinosaur);
}
Console.WriteLine("\nBinarySearch for 'Coelophysis':");
int index = Array.BinarySearch(dinosaurs, "Coelophysis", rc);
ShowWhere(dinosaurs, index);
Console.WriteLine("\nBinarySearch for 'Tyrannosaurus':");
index = Array.BinarySearch(dinosaurs, "Tyrannosaurus", rc);
ShowWhere(dinosaurs, index);
}
private static void ShowWhere<T>(T[] array, int index)
{
if (index<0)
{
// If the index is negative, it represents the bitwise
// complement of the next larger element in the array.
//
index = ~index;
Console.Write("Not found. Sorts between: ");
if (index == 0)
Console.Write("beginning of array and ");
else
Console.Write("{0} and ", array[index-1]);
if (index == array.Length)
Console.WriteLine("end of array.");
else
Console.WriteLine("{0}.", array[index]);
}
else
{
Console.WriteLine("Found at index {0}.", index);
}
}
}
/* This code example produces the following output:
Pachycephalosaurus
Amargasaurus
Tyrannosaurus
Mamenchisaurus
Deinonychus
Edmontosaurus
Sort
Tyrannosaurus
Pachycephalosaurus
Mamenchisaurus
Edmontosaurus
Deinonychus
Amargasaurus
BinarySearch for 'Coelophysis':
Not found. Sorts between: Deinonychus and Amargasaurus.
BinarySearch for 'Tyrannosaurus':
Found at index 0.
*/
open System
open System.Collections.Generic
type ReverseComparer() =
interface IComparer<string> with
member _.Compare(x, y) =
// Compare y and x in reverse order.
y.CompareTo x
let showWhere (array: 'a []) index =
if index < 0 then
// If the index is negative, it represents the bitwise
// complement of the next larger element in the array.
let index = ~~~index
printf "Not found. Sorts between: "
if index = 0 then
printf "beginning of array and "
else
printf $"{array[index - 1]} and "
if index = array.Length then
printfn "end of array."
else
printfn $"{array[index]}."
else
printfn $"Found at index {index}."
let dinosaurs =
[| "Pachycephalosaurus"
"Amargasaurus"
"Tyrannosaurus"
"Mamenchisaurus"
"Deinonychus"
"Edmontosaurus" |]
printfn ""
for dino in dinosaurs do
printfn $"{dino}"
let rc = ReverseComparer()
printfn "\nSort"
Array.Sort(dinosaurs, rc)
printfn ""
for dino in dinosaurs do
printfn $"{dino}"
printfn "\nBinarySearch for 'Coelophysis':"
Array.BinarySearch(dinosaurs, "Coelophysis", rc)
|> showWhere dinosaurs
printfn "\nBinarySearch for 'Tyrannosaurus':"
Array.BinarySearch(dinosaurs, "Tyrannosaurus", rc)
|> showWhere dinosaurs
// This code example produces the following output:
// Pachycephalosaurus
// Amargasaurus
// Tyrannosaurus
// Mamenchisaurus
// Deinonychus
// Edmontosaurus
//
// Sort
//
// Tyrannosaurus
// Pachycephalosaurus
// Mamenchisaurus
// Edmontosaurus
// Deinonychus
// Amargasaurus
//
// BinarySearch for 'Coelophysis':
// Not found. Sorts between: Deinonychus and Amargasaurus.
//
// BinarySearch for 'Tyrannosaurus':
// Found at index 0.
Imports System.Collections.Generic
Public Class ReverseComparer
Implements IComparer(Of String)
Public Function Compare(ByVal x As String, _
ByVal y As String) As Integer _
Implements IComparer(Of String).Compare
' Compare y and x in reverse order.
Return y.CompareTo(x)
End Function
End Class
Public Class Example
Public Shared Sub Main()
Dim dinosaurs() As String = { _
"Pachycephalosaurus", _
"Amargasaurus", _
"Tyrannosaurus", _
"Mamenchisaurus", _
"Deinonychus", _
"Edmontosaurus" }
Console.WriteLine()
For Each dinosaur As String In dinosaurs
Console.WriteLine(dinosaur)
Next
Dim rc As New ReverseComparer()
Console.WriteLine(vbLf & "Sort")
Array.Sort(dinosaurs, rc)
Console.WriteLine()
For Each dinosaur As String In dinosaurs
Console.WriteLine(dinosaur)
Next
Console.WriteLine(vbLf & _
"BinarySearch for 'Coelophysis':")
Dim index As Integer = _
Array.BinarySearch(dinosaurs, "Coelophysis", rc)
ShowWhere(dinosaurs, index)
Console.WriteLine(vbLf & _
"BinarySearch for 'Tyrannosaurus':")
index = Array.BinarySearch(dinosaurs, "Tyrannosaurus", rc)
ShowWhere(dinosaurs, index)
End Sub
Private Shared Sub ShowWhere(Of T) _
(ByVal array() As T, ByVal index As Integer)
If index < 0 Then
' If the index is negative, it represents the bitwise
' complement of the next larger element in the array.
'
index = index Xor -1
Console.Write("Not found. Sorts between: ")
If index = 0 Then
Console.Write("beginning of array and ")
Else
Console.Write("{0} and ", array(index - 1))
End If
If index = array.Length Then
Console.WriteLine("end of array.")
Else
Console.WriteLine("{0}.", array(index))
End If
Else
Console.WriteLine("Found at index {0}.", index)
End If
End Sub
End Class
' This code example produces the following output:
'
'Pachycephalosaurus
'Amargasaurus
'Tyrannosaurus
'Mamenchisaurus
'Deinonychus
'Edmontosaurus
'
'Sort
'
'Tyrannosaurus
'Pachycephalosaurus
'Mamenchisaurus
'Edmontosaurus
'Deinonychus
'Amargasaurus
'
'BinarySearch for 'Coelophysis':
'Not found. Sorts between: Deinonychus and Amargasaurus.
'
'BinarySearch for 'Tyrannosaurus':
'Found at index 0.
Opmerkingen
Deze methode biedt geen ondersteuning voor het zoeken van matrices die negatieve indexen bevatten.
array moet worden gesorteerd voordat u deze methode aanroept.
Als de Array opgegeven waarde niet bevat, retourneert de methode een negatief geheel getal. U kunt de operator bitwise complement (~ in C#, Not in Visual Basic) toepassen op het negatieve resultaat om een index te produceren. Als deze index gelijk is aan de grootte van de matrix, zijn er geen elementen groter dan value in de matrix. Anders is het de index van het eerste element dat groter is dan value.
De vergelijkingsfunctie past aan hoe de elementen worden vergeleken. U kunt bijvoorbeeld een System.Collections.CaseInsensitiveComparer als vergelijkingsfunctie gebruiken om hoofdlettergevoelige tekenreekszoekopdrachten uit te voeren.
Als comparer dat niet nullhet is, worden de elementen array vergeleken met de opgegeven waarde met behulp van de opgegeven IComparer<T> algemene interface-implementatie. De elementen van array moeten al worden gesorteerd in toenemende waarde volgens de sorteervolgorde die is gedefinieerd door comparer; anders kan het resultaat onjuist zijn.
Als comparer dat het is null, wordt de vergelijking uitgevoerd met behulp van de IComparable<T> algemene interface-implementatie die wordt geleverd door T. De elementen van moeten al in toenemende waarde worden gesorteerd op basis van array de sorteervolgorde die door de IComparable<T> implementatie is gedefinieerd. Anders kan het resultaat onjuist zijn.
Note
Als comparer dat het geval is null en value de IComparable<T> algemene interface niet implementeert, worden de elementen van array niet getest IComparable<T> voordat de zoekopdracht begint. Er wordt een uitzondering gegenereerd als de zoekopdracht een element tegenkomt dat niet wordt geïmplementeerd IComparable<T>.
Dubbele elementen zijn toegestaan. Als het Array meer dan één element bevat dat gelijk is aan value, retourneert de methode de index van slechts één van de exemplaren en niet noodzakelijkerwijs de eerste.
null kan altijd worden vergeleken met elk ander referentietype; Daarom genereren vergelijkingen met null geen uitzondering.
Note
Voor elk getest element wordt value de juiste IComparable<T> implementatie doorgegeven, zelfs als value dat het geval is null. Dat wil gezegd, de IComparable<T> implementatie bepaalt hoe een bepaald element zich verhoudt tot null.
Deze methode is een O(log n)-bewerking, waarbij n de Length van array.
Zie ook
Van toepassing op
BinarySearch<T>(T[], Int32, Int32, T)
- Bron:
- Array.cs
- Bron:
- Array.cs
- Bron:
- Array.cs
- Bron:
- Array.cs
- Bron:
- Array.cs
Zoekt in een bereik met elementen in een eendimensionale gesorteerde matrix naar een waarde met behulp van de IComparable<T> algemene interface die wordt geïmplementeerd door elk element van de Array en de opgegeven waarde.
public:
generic <typename T>
static int BinarySearch(cli::array <T> ^ array, int index, int length, T value);
public static int BinarySearch<T>(T[] array, int index, int length, T value);
static member BinarySearch : 'T[] * int * int * 'T -> int
Public Shared Function BinarySearch(Of T) (array As T(), index As Integer, length As Integer, value As T) As Integer
Type parameters
- T
Het type van de elementen van de matrix.
Parameters
- array
- T[]
De gesorteerde eendimensionale, op nul gebaseerde Array zoekopdrachten.
- index
- Int32
De beginindex van het bereik om te zoeken.
- length
- Int32
De lengte van het bereik om te zoeken.
- value
- T
Het object waarnaar moet worden gezocht.
Retouren
De index van de opgegeven in de opgegeven valuearray, indien value gevonden; anders een negatief getal. Als value deze niet wordt gevonden en value kleiner is dan een of meer elementen, arrayis het negatieve getal dat wordt geretourneerd het bitsgewijze complement van de index van het eerste element dat groter is dan value. Als value deze niet wordt gevonden en value groter is dan alle elementen, arrayis het negatieve getal dat wordt geretourneerd het bitsgewijze complement van (de index van het laatste element plus 1). Als deze methode wordt aangeroepen met een niet-gesorteerde arraywaarde, kan de retourwaarde onjuist zijn en kan een negatief getal worden geretourneerd, zelfs als value deze aanwezig is in array.
Uitzonderingen
array is null.
index is kleiner dan de ondergrens van array.
– of –
length is kleiner dan nul.
index en length geef geen geldig bereik op in array.
– of –
value is van een type dat niet compatibel is met de elementen van array.
T implementeert de IComparable<T> algemene interface niet.
Opmerkingen
Deze methode biedt geen ondersteuning voor het zoeken van matrices die negatieve indexen bevatten.
array moet worden gesorteerd voordat u deze methode aanroept.
Als de matrix de opgegeven waarde niet bevat, retourneert de methode een negatief geheel getal. U kunt de operator bitwise complement (~ in C#, Not in Visual Basic) toepassen op het negatieve resultaat om een index te produceren. Als deze index gelijk is aan de grootte van de matrix, zijn er geen elementen groter dan value in de matrix. Anders is het de index van het eerste element dat groter is dan value.
T moet de IComparable<T> algemene interface implementeren, die wordt gebruikt voor vergelijkingen. De elementen van moeten al in toenemende waarde worden gesorteerd op basis van array de sorteervolgorde die door de IComparable<T> implementatie is gedefinieerd. Anders kan het resultaat onjuist zijn.
Dubbele elementen zijn toegestaan. Als het Array meer dan één element bevat dat gelijk is aan value, retourneert de methode de index van slechts één van de exemplaren en niet noodzakelijkerwijs de eerste.
null kan altijd worden vergeleken met elk ander referentietype; Daarom genereren vergelijkingen met null geen uitzondering.
Note
Voor elk getest element wordt value de juiste IComparable<T> implementatie doorgegeven, zelfs als value dat het geval is null. Dat wil gezegd, de IComparable<T> implementatie bepaalt hoe een bepaald element zich verhoudt tot null.
Deze methode is een O(log)-nbewerking, waarbij n .length
Zie ook
Van toepassing op
BinarySearch<T>(T[], Int32, Int32, T, IComparer<T>)
- Bron:
- Array.cs
- Bron:
- Array.cs
- Bron:
- Array.cs
- Bron:
- Array.cs
- Bron:
- Array.cs
Zoekt in een bereik met elementen in een eendimensionale gesorteerde matrix naar een waarde met behulp van de opgegeven IComparer<T> algemene interface.
public:
generic <typename T>
static int BinarySearch(cli::array <T> ^ array, int index, int length, T value, System::Collections::Generic::IComparer<T> ^ comparer);
public static int BinarySearch<T>(T[] array, int index, int length, T value, System.Collections.Generic.IComparer<T> comparer);
public static int BinarySearch<T>(T[] array, int index, int length, T value, System.Collections.Generic.IComparer<T>? comparer);
static member BinarySearch : 'T[] * int * int * 'T * System.Collections.Generic.IComparer<'T> -> int
Public Shared Function BinarySearch(Of T) (array As T(), index As Integer, length As Integer, value As T, comparer As IComparer(Of T)) As Integer
Type parameters
- T
Het type van de elementen van de matrix.
Parameters
- array
- T[]
De gesorteerde eendimensionale, op nul gebaseerde Array zoekopdrachten.
- index
- Int32
De beginindex van het bereik om te zoeken.
- length
- Int32
De lengte van het bereik om te zoeken.
- value
- T
Het object waarnaar moet worden gezocht.
- comparer
- IComparer<T>
De IComparer<T> implementatie die moet worden gebruikt bij het vergelijken van elementen.
– of –
null om de IComparable<T> implementatie van elk element te gebruiken.
Retouren
De index van de opgegeven in de opgegeven valuearray, indien value gevonden; anders een negatief getal. Als value deze niet wordt gevonden en value kleiner is dan een of meer elementen, arrayis het negatieve getal dat wordt geretourneerd het bitsgewijze complement van de index van het eerste element dat groter is dan value. Als value deze niet wordt gevonden en value groter is dan alle elementen, arrayis het negatieve getal dat wordt geretourneerd het bitsgewijze complement van (de index van het laatste element plus 1). Als deze methode wordt aangeroepen met een niet-gesorteerde arraywaarde, kan de retourwaarde onjuist zijn en kan een negatief getal worden geretourneerd, zelfs als value deze aanwezig is in array.
Uitzonderingen
array is null.
index is kleiner dan de ondergrens van array.
– of –
length is kleiner dan nul.
index en length geef geen geldig bereik op in array.
– of –
comparer is null, en value is van een type dat niet compatibel is met de elementen van array.
comparer is nullen T implementeert IComparable<T> de algemene interface niet.
Opmerkingen
Deze methode biedt geen ondersteuning voor het zoeken van matrices die negatieve indexen bevatten.
array moet worden gesorteerd voordat u deze methode aanroept.
Als de matrix de opgegeven waarde niet bevat, retourneert de methode een negatief geheel getal. U kunt de operator bitwise complement (~ in C#, Not in Visual Basic) toepassen op het negatieve resultaat om een index te produceren. Als deze index gelijk is aan de grootte van de matrix, zijn er geen elementen groter dan value in de matrix. Anders is het de index van het eerste element dat groter is dan value.
De vergelijkingsfunctie past aan hoe de elementen worden vergeleken. U kunt bijvoorbeeld een System.Collections.CaseInsensitiveComparer als vergelijkingsfunctie gebruiken om hoofdlettergevoelige tekenreekszoekopdrachten uit te voeren.
Als comparer dat niet nullhet is, worden de elementen array vergeleken met de opgegeven waarde met behulp van de opgegeven IComparer<T> algemene interface-implementatie. De elementen van array moeten al worden gesorteerd in toenemende waarde volgens de sorteervolgorde die is gedefinieerd door comparer; anders kan het resultaat onjuist zijn.
Als comparer dat het is null, wordt de vergelijking uitgevoerd met behulp van de IComparable<T> algemene interface-implementatie die voor het type Tis opgegeven. De elementen van moeten al in toenemende waarde worden gesorteerd op basis van array de sorteervolgorde die door de IComparable<T> implementatie is gedefinieerd. Anders kan het resultaat onjuist zijn.
Dubbele elementen zijn toegestaan. Als het Array meer dan één element bevat dat gelijk is aan value, retourneert de methode de index van slechts één van de exemplaren en niet noodzakelijkerwijs de eerste.
null kan altijd worden vergeleken met elk ander referentietype; daarom genereren vergelijkingen met null geen uitzondering bij gebruik IComparable<T>.
Note
Voor elk getest element wordt value de juiste IComparable<T> implementatie doorgegeven, zelfs als value dat het geval is null. Dat wil gezegd, de IComparable<T> implementatie bepaalt hoe een bepaald element zich verhoudt tot null.
Deze methode is een O(log)-nbewerking, waarbij n .length