Array.BinarySearch Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Söker i en endimensionell sorterad Array efter ett värde med hjälp av en binär sökalgoritm.
Överlagringar
| Name | Description |
|---|---|
| BinarySearch(Array, Object) |
Söker i en hel endimensionell sorterad matris efter ett specifikt element med hjälp IComparable av gränssnittet som implementeras av varje element i matrisen och av det angivna objektet. |
| BinarySearch(Array, Object, IComparer) |
Söker i en hel endimensionell sorterad matris efter ett värde med det angivna IComparer gränssnittet. |
| BinarySearch(Array, Int32, Int32, Object) |
Söker i ett område med element i en endimensionell sorterad matris efter ett värde med hjälp IComparable av gränssnittet som implementeras av varje element i matrisen och med det angivna värdet. |
| BinarySearch(Array, Int32, Int32, Object, IComparer) |
Söker i ett område med element i en endimensionell sorterad matris efter ett värde med hjälp av det angivna IComparer gränssnittet. |
| BinarySearch<T>(T[], T) |
Söker i en hel endimensionell sorterad matris efter ett specifikt element med hjälp av det IComparable<T> generiska gränssnittet som implementeras av varje element i Array och av det angivna objektet. |
| BinarySearch<T>(T[], T, IComparer<T>) |
Söker i en hel endimensionell sorterad matris efter ett värde med det angivna IComparer<T> allmänna gränssnittet. |
| BinarySearch<T>(T[], Int32, Int32, T) |
Söker i ett område med element i en endimensionell sorterad matris efter ett värde med hjälp av det IComparable<T> generiska gränssnittet som implementeras av varje element i Array och efter det angivna värdet. |
| BinarySearch<T>(T[], Int32, Int32, T, IComparer<T>) |
Söker i ett område med element i en endimensionell sorterad matris efter ett värde med hjälp av det angivna IComparer<T> allmänna gränssnittet. |
BinarySearch(Array, Object)
- Källa:
- Array.cs
- Källa:
- Array.cs
- Källa:
- Array.cs
- Källa:
- Array.cs
- Källa:
- Array.cs
Söker i en hel endimensionell sorterad matris efter ett specifikt element med hjälp IComparable av gränssnittet som implementeras av varje element i matrisen och av det angivna objektet.
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
Parametrar
- value
- Object
Objektet som ska sökas efter.
Returer
Indexet för angivet value i angivet array, om value hittas, annars ett negativt tal. Om value inte hittas och value är mindre än ett eller flera element i arrayär det negativa talet som returneras bitvis komplementet till indexet för det första elementet som är större än value. Om value inte hittas och value är större än alla element i arrayär det negativa talet som returneras bitvis komplement (indexet för det sista elementet plus 1). Om den här metoden anropas med en icke-sorterad arraykan returvärdet vara felaktigt och ett negativt tal kan returneras, även om value det finns i array.
Undantag
array är null.
array är flerdimensionellt.
value är av en typ som inte är kompatibel med elementen arrayi .
value implementerar IComparable inte gränssnittet och sökningen påträffar ett element som inte implementerar IComparable gränssnittet.
Exempel
I följande kodexempel visas hur du använder BinarySearch för att hitta ett specifikt objekt i en Array.
Note
Matrisen skapas med dess element i stigande sorteringsordning. Metoden BinarySearch kräver att matrisen sorteras i stigande ordning.
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.
Kommentarer
Den här metoden stöder inte sökning i matriser som innehåller negativa index.
array måste sorteras innan den här metoden anropas.
Om inte Array innehåller det angivna värdet returnerar metoden ett negativt heltal. Du kan använda bitvis komplementoperator (~ i C#, Not i Visual Basic) på det negativa resultatet för att skapa ett index. Om det här indexet är ett större än matrisens övre gräns finns det inga element som är större än value i matrisen. Annars är det indexet för det första elementet som är större än value.
Antingen value eller varje element array i måste implementera IComparable gränssnittet, som används för jämförelser. Elementen array i måste redan sorteras i ökande värde enligt den sorteringsordning som definieras av implementeringen IComparable . Annars kan resultatet vara felaktigt.
Note
Omvalue inte implementerar IComparable gränssnittet testas array inte elementen IComparable i innan sökningen börjar. Ett undantag utlöses om sökningen påträffar ett element som inte implementerar IComparable.
Duplicerade element tillåts.
Array Om innehåller mer än ett element som är lika med valuereturnerar metoden indexet för endast en av förekomsterna och inte nödvändigtvis den första.
null kan alltid jämföras med andra referenstyper. Därför genererar jämförelser med null inte ett undantag.
Note
För varje testelement skickas value till lämplig IComparable implementering, även om value är null. Implementeringen IComparable avgör alltså hur ett visst element jämförs nullmed .
Den här metoden är en O(log n)-åtgärd, där n är för Lengtharray.
Se även
Gäller för
BinarySearch(Array, Object, IComparer)
- Källa:
- Array.cs
- Källa:
- Array.cs
- Källa:
- Array.cs
- Källa:
- Array.cs
- Källa:
- Array.cs
Söker i en hel endimensionell sorterad matris efter ett värde med det angivna IComparer gränssnittet.
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
Parametrar
- value
- Object
Objektet som ska sökas efter.
- comparer
- IComparer
Den IComparer implementering som ska användas vid jämförelse av element.
-eller-
null för att använda implementeringen IComparable av varje element.
Returer
Indexet för angivet value i angivet array, om value hittas, annars ett negativt tal. Om value inte hittas och value är mindre än ett eller flera element i arrayär det negativa talet som returneras bitvis komplementet till indexet för det första elementet som är större än value. Om value inte hittas och value är större än alla element i arrayär det negativa talet som returneras bitvis komplement (indexet för det sista elementet plus 1). Om den här metoden anropas med en icke-sorterad arraykan returvärdet vara felaktigt och ett negativt tal kan returneras, även om value det finns i array.
Undantag
array är null.
array är flerdimensionellt.
comparer är null, och value är av en typ som inte är kompatibel med elementen arrayi .
comparer is null, value implementerar IComparable inte gränssnittet och sökningen påträffar ett element som inte implementerar IComparable gränssnittet.
Kommentarer
Den här metoden stöder inte sökning i matriser som innehåller negativa index.
array måste sorteras innan den här metoden anropas.
Om inte Array innehåller det angivna värdet returnerar metoden ett negativt heltal. Du kan använda bitvis komplementoperator (~ i C#, Not i Visual Basic) på det negativa resultatet för att skapa ett index. Om det här indexet är ett större än matrisens övre gräns finns det inga element som är större än value i matrisen. Annars är det indexet för det första elementet som är större än value.
Jämförelsen anpassar hur elementen jämförs. Du kan till exempel använda en System.Collections.CaseInsensitiveComparer som jämförelse för att utföra skiftlägesokänsliga strängsökningar.
Om comparer inte nulljämförs elementen array i med det angivna värdet med den angivna IComparer implementeringen. Elementen array i måste redan sorteras i ökande värde enligt sorteringsordningen som definieras av comparer. Annars kan resultatet vara felaktigt.
Omcomparer är nullgörs jämförelsen med hjälp av implementeringen IComparable som tillhandahålls av själva elementet eller av det angivna värdet. Elementen array i måste redan sorteras i ökande värde enligt den sorteringsordning som definieras av implementeringen IComparable . Annars kan resultatet vara felaktigt.
Note
Om comparer är null och value inte implementerar IComparable gränssnittet testas array inte elementen IComparable i innan sökningen börjar. Ett undantag utlöses om sökningen påträffar ett element som inte implementerar IComparable.
Duplicerade element tillåts.
Array Om innehåller mer än ett element som är lika med valuereturnerar metoden indexet för endast en av förekomsterna och inte nödvändigtvis den första.
null kan alltid jämföras med andra referenstyper. Därför genererar jämförelser med null inte ett undantag.
Note
För varje testelement skickas value till lämplig IComparable implementering, även om value är null. Implementeringen IComparable avgör alltså hur ett visst element jämförs nullmed .
Den här metoden är en O(log n)-åtgärd, där n är för Lengtharray.
Se även
Gäller för
BinarySearch(Array, Int32, Int32, Object)
- Källa:
- Array.cs
- Källa:
- Array.cs
- Källa:
- Array.cs
- Källa:
- Array.cs
- Källa:
- Array.cs
Söker i ett område med element i en endimensionell sorterad matris efter ett värde med hjälp IComparable av gränssnittet som implementeras av varje element i matrisen och med det angivna värdet.
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
Parametrar
- index
- Int32
Startindexet för intervallet som ska sökas.
- length
- Int32
Längden på det intervall som ska sökas.
- value
- Object
Objektet som ska sökas efter.
Returer
Indexet för angivet value i angivet array, om value hittas, annars ett negativt tal. Om value inte hittas och value är mindre än ett eller flera element i arrayär det negativa talet som returneras bitvis komplementet till indexet för det första elementet som är större än value. Om value inte hittas och value är större än alla element i arrayär det negativa talet som returneras bitvis komplement (indexet för det sista elementet plus 1). Om den här metoden anropas med en icke-sorterad arraykan returvärdet vara felaktigt och ett negativt tal kan returneras, även om value det finns i array.
Undantag
array är null.
array är flerdimensionellt.
index är mindre än den nedre gränsen för array.
-eller-
length är mindre än noll.
index och length ange inte ett giltigt intervall i array.
-eller-
value är av en typ som inte är kompatibel med elementen arrayi .
value implementerar IComparable inte gränssnittet och sökningen påträffar ett element som inte implementerar IComparable gränssnittet.
Kommentarer
Den här metoden stöder inte sökning i matriser som innehåller negativa index.
array måste sorteras innan den här metoden anropas.
Om inte Array innehåller det angivna värdet returnerar metoden ett negativt heltal. Du kan använda bitvis komplementoperator (~ i C#, Not i Visual Basic) på det negativa resultatet för att skapa ett index. Om det här indexet är ett större än matrisens övre gräns finns det inga element som är större än value i matrisen. Annars är det indexet för det första elementet som är större än value.
Antingen value eller varje element array i måste implementera IComparable gränssnittet, som används för jämförelser. Elementen array i måste redan sorteras i ökande värde enligt den sorteringsordning som definieras av implementeringen IComparable . Annars kan resultatet vara felaktigt.
Note
Om value inte implementerar IComparable gränssnittet testas array inte elementen IComparable i innan sökningen börjar. Ett undantag utlöses om sökningen påträffar ett element som inte implementerar IComparable.
Duplicerade element tillåts.
Array Om innehåller mer än ett element som är lika med valuereturnerar metoden indexet för endast en av förekomsterna och inte nödvändigtvis den första.
null kan alltid jämföras med andra referenstyper. Därför genererar jämförelser med null inte ett undantag.
Note
För varje testelement skickas value till lämplig IComparable implementering, även om value är null. Implementeringen IComparable avgör alltså hur ett visst element jämförs nullmed .
Den här metoden är en O(log n)-åtgärd, där n är length.
Se även
Gäller för
BinarySearch(Array, Int32, Int32, Object, IComparer)
- Källa:
- Array.cs
- Källa:
- Array.cs
- Källa:
- Array.cs
- Källa:
- Array.cs
- Källa:
- Array.cs
Söker i ett område med element i en endimensionell sorterad matris efter ett värde med hjälp av det angivna IComparer gränssnittet.
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
Parametrar
- index
- Int32
Startindexet för intervallet som ska sökas.
- length
- Int32
Längden på det intervall som ska sökas.
- value
- Object
Objektet som ska sökas efter.
- comparer
- IComparer
Den IComparer implementering som ska användas vid jämförelse av element.
-eller-
null för att använda implementeringen IComparable av varje element.
Returer
Indexet för angivet value i angivet array, om value hittas, annars ett negativt tal. Om value inte hittas och value är mindre än ett eller flera element i arrayär det negativa talet som returneras bitvis komplementet till indexet för det första elementet som är större än value. Om value inte hittas och value är större än alla element i arrayär det negativa talet som returneras bitvis komplement (indexet för det sista elementet plus 1). Om den här metoden anropas med en icke-sorterad arraykan returvärdet vara felaktigt och ett negativt tal kan returneras, även om value det finns i array.
Undantag
array är null.
array är flerdimensionellt.
index är mindre än den nedre gränsen för array.
-eller-
length är mindre än noll.
index och length ange inte ett giltigt intervall i array.
-eller-
comparer är null, och value är av en typ som inte är kompatibel med elementen arrayi .
comparer is null, value implementerar IComparable inte gränssnittet och sökningen påträffar ett element som inte implementerar IComparable gränssnittet.
Kommentarer
Den här metoden stöder inte sökning i matriser som innehåller negativa index.
array måste sorteras innan den här metoden anropas.
Om inte Array innehåller det angivna värdet returnerar metoden ett negativt heltal. Du kan använda bitvis komplementoperator (~ i C#, Not i Visual Basic) på det negativa resultatet för att skapa ett index. Om det här indexet är ett större än matrisens övre gräns finns det inga element som är större än value i matrisen. Annars är det indexet för det första elementet som är större än value.
Jämförelsen anpassar hur elementen jämförs. Du kan till exempel använda en System.Collections.CaseInsensitiveComparer som jämförelse för att utföra skiftlägesokänsliga strängsökningar.
Om comparer inte nulljämförs elementen array i med det angivna värdet med den angivna IComparer implementeringen. Elementen array i måste redan sorteras i ökande värde enligt sorteringsordningen som definieras av comparer. Annars kan resultatet vara felaktigt.
Om comparer är nullgörs jämförelsen med hjälp av implementeringen IComparable som tillhandahålls av själva elementet eller av det angivna värdet. Elementen array i måste redan sorteras i ökande värde enligt den sorteringsordning som definieras av implementeringen IComparable . Annars kan resultatet vara felaktigt.
Note
Om comparer är null och value inte implementerar IComparable gränssnittet testas array inte elementen IComparable i innan sökningen börjar. Ett undantag utlöses om sökningen påträffar ett element som inte implementerar IComparable.
Duplicerade element tillåts.
Array Om innehåller mer än ett element som är lika med valuereturnerar metoden indexet för endast en av förekomsterna och inte nödvändigtvis den första.
null kan alltid jämföras med andra referenstyper. Därför genererar jämförelser med null inte ett undantag när du använder IComparable.
Note
För varje testelement skickas value till lämplig IComparable implementering, även om value är null. Implementeringen IComparable avgör alltså hur ett visst element jämförs nullmed .
Den här metoden är en O(log n)-åtgärd, där n är length.
Se även
Gäller för
BinarySearch<T>(T[], T)
- Källa:
- Array.cs
- Källa:
- Array.cs
- Källa:
- Array.cs
- Källa:
- Array.cs
- Källa:
- Array.cs
Söker i en hel endimensionell sorterad matris efter ett specifikt element med hjälp av det IComparable<T> generiska gränssnittet som implementeras av varje element i Array och av det angivna objektet.
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
Typparametrar
- T
Typ av element i matrisen.
Parametrar
- array
- T[]
Den sorterade endimensionella, nollbaserade sökfunktionen Array .
- value
- T
Objektet som ska sökas efter.
Returer
Indexet för angivet value i angivet array, om value hittas, annars ett negativt tal. Om value inte hittas och value är mindre än ett eller flera element i arrayär det negativa talet som returneras bitvis komplementet till indexet för det första elementet som är större än value. Om value inte hittas och value är större än alla element i arrayär det negativa talet som returneras bitvis komplement (indexet för det sista elementet plus 1). Om den här metoden anropas med en icke-sorterad arraykan returvärdet vara felaktigt och ett negativt tal kan returneras, även om value det finns i array.
Undantag
array är null.
T implementerar inte det IComparable<T> allmänna gränssnittet.
Exempel
I följande kodexempel visas den Sort<T>(T[]) generiska metodöverlagringen och den generiska metodöverlagringen BinarySearch<T>(T[], T) . En matris med strängar skapas, utan någon särskild ordning.
Matrisen visas, sorteras och visas igen. Matriser måste sorteras för att kunna använda BinarySearch metoden.
Note
Anropen till Sort och BinarySearch generiska metoder ser inte annorlunda ut än anrop till deras icke-generiska motsvarigheter, eftersom Visual Basic, F#, C#och C++ härleder typen av parameter av allmän typ från typen av det första argumentet. Om du använder Ildasm.exe (IL Disassembler) för att undersöka Microsoft mellanliggande språk (MSIL) kan du se att de generiska metoderna anropas.
Den BinarySearch<T>(T[], T) generiska metodöverlagringen används sedan för att söka efter två strängar, en som inte finns i matrisen och en som är. Matrisen och returvärdet BinarySearch för metoden skickas till den ShowWhere generiska metoden ( showWhere funktionen i F#-exemplet), som visar indexvärdet om strängen hittas, och annars skulle elementen söksträngen falla mellan om den fanns i matrisen. Indexet är negativt om strängen inte finns i matrisen, så metoden ShowWhere tar bitvis komplementet (~-operatorn i C#, ~~~-operatorn i F#, Xor-1 i Visual Basic) för att hämta indexet för det första elementet i listan som är större än söksträngen.
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.
Kommentarer
Den här metoden stöder inte sökning i matriser som innehåller negativa index.
array måste sorteras innan den här metoden anropas.
Om array inte innehåller det angivna värdet returnerar metoden ett negativt heltal. Du kan använda bitvis komplementoperator (~ i C#, Not i Visual Basic) på det negativa resultatet för att skapa ett index. Om det här indexet är lika med matrisens storlek finns det inga element som är större än value i matrisen. Annars är det indexet för det första elementet som är större än value.
T måste implementera det IComparable<T> allmänna gränssnittet, som används för jämförelser. Elementen array i måste redan sorteras i ökande värde enligt den sorteringsordning som definieras av implementeringen IComparable<T> . Annars kan resultatet vara felaktigt.
Duplicerade element tillåts.
Array Om innehåller mer än ett element som är lika med valuereturnerar metoden indexet för endast en av förekomsterna och inte nödvändigtvis den första.
null kan alltid jämföras med andra referenstyper. Därför genererar jämförelser med null inte ett undantag.
Note
För varje testelement skickas value till lämplig IComparable<T> implementering, även om value är null. Implementeringen IComparable<T> avgör alltså hur ett visst element jämförs nullmed .
Den här metoden är en O(log n)-åtgärd, där n är för Lengtharray.
Se även
Gäller för
BinarySearch<T>(T[], T, IComparer<T>)
- Källa:
- Array.cs
- Källa:
- Array.cs
- Källa:
- Array.cs
- Källa:
- Array.cs
- Källa:
- Array.cs
Söker i en hel endimensionell sorterad matris efter ett värde med det angivna IComparer<T> allmänna gränssnittet.
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
Typparametrar
- T
Typ av element i matrisen.
Parametrar
- array
- T[]
Den sorterade endimensionella, nollbaserade sökfunktionen Array .
- value
- T
Objektet som ska sökas efter.
- comparer
- IComparer<T>
Den IComparer<T> implementering som ska användas vid jämförelse av element.
-eller-
null för att använda implementeringen IComparable<T> av varje element.
Returer
Indexet för angivet value i angivet array, om value hittas, annars ett negativt tal. Om value inte hittas och value är mindre än ett eller flera element i arrayär det negativa talet som returneras bitvis komplementet till indexet för det första elementet som är större än value. Om value inte hittas och value är större än alla element i arrayär det negativa talet som returneras bitvis komplement (indexet för det sista elementet plus 1). Om den här metoden anropas med en icke-sorterad arraykan returvärdet vara felaktigt och ett negativt tal kan returneras, även om value det finns i array.
Undantag
array är null.
comparer är null, och value är av en typ som inte är kompatibel med elementen arrayi .
comparer är null, och T implementerar inte det IComparable<T> allmänna gränssnittet
Exempel
I följande exempel visas den Sort<T>(T[], IComparer<T>) generiska metodöverlagringen och den generiska metodöverlagringen BinarySearch<T>(T[], T, IComparer<T>) .
Kodexemplet definierar en alternativ jämförelse för strängar med namnet ReverseCompare, som implementerar det allmänna gränssnittet IComparer<string> (IComparer(Of String) i Visual Basic). Jämförelsen anropar CompareTo(String) metoden och återställer ordningen på comparands så att strängarna sorteras högt till lågt i stället för låg till hög.
Matrisen visas, sorteras och visas igen. Matriser måste sorteras för att kunna använda BinarySearch metoden.
Note
Anropen till Sort<T>(T[], IComparer<T>) och BinarySearch<T>(T[], T, IComparer<T>) generiska metoder ser inte annorlunda ut än anrop till deras icke-generiska motsvarigheter eftersom Visual Basic, C#och C++ härleder typen av parameter av generisk typ från typen av det första argumentet. Om du använder Ildasm.exe (IL Disassembler) för att undersöka Microsoft mellanliggande språk (MSIL) kan du se att de generiska metoderna anropas.
Den BinarySearch<T>(T[], T, IComparer<T>) generiska metodöverlagringen används sedan för att söka efter två strängar, en som inte finns i matrisen och en som är. Matrisen och returvärdet BinarySearch<T>(T[], T, IComparer<T>) för metoden skickas till den ShowWhere generiska metoden ( showWhere funktionen i F#-exemplet), som visar indexvärdet om strängen hittas, och annars skulle elementen söksträngen falla mellan om den fanns i matrisen. Indexet är negativt om strängen inte är n matrisen, så metoden ShowWhere tar bitvis komplement (~-operatorn i C#, ~~~-operatorn i F#, Xor -1 i Visual Basic) för att hämta indexet för det första elementet i listan som är större än söksträngen.
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.
Kommentarer
Den här metoden stöder inte sökning i matriser som innehåller negativa index.
array måste sorteras innan den här metoden anropas.
Om inte Array innehåller det angivna värdet returnerar metoden ett negativt heltal. Du kan använda bitvis komplementoperator (~ i C#, Not i Visual Basic) på det negativa resultatet för att skapa ett index. Om det här indexet är lika med matrisens storlek finns det inga element som är större än value i matrisen. Annars är det indexet för det första elementet som är större än value.
Jämförelsen anpassar hur elementen jämförs. Du kan till exempel använda en System.Collections.CaseInsensitiveComparer som jämförelse för att utföra skiftlägesokänsliga strängsökningar.
Om comparer inte nulljämförs elementen array i med det angivna värdet med den angivna IComparer<T> allmänna gränssnittsimplementeringen. Elementen array i måste redan sorteras i ökande värde enligt sorteringsordningen som definieras av comparer. Annars kan resultatet vara felaktigt.
Om comparer är nullgörs jämförelsen med den IComparable<T> allmänna gränssnittsimplementeringen som tillhandahålls av T. Elementen array i måste redan sorteras i ökande värde enligt den sorteringsordning som definieras av implementeringen IComparable<T> . Annars kan resultatet vara felaktigt.
Note
Om comparer är null och value inte implementerar det IComparable<T> generiska gränssnittet testas array inte elementen IComparable<T> i innan sökningen börjar. Ett undantag utlöses om sökningen påträffar ett element som inte implementerar IComparable<T>.
Duplicerade element tillåts.
Array Om innehåller mer än ett element som är lika med valuereturnerar metoden indexet för endast en av förekomsterna och inte nödvändigtvis den första.
null kan alltid jämföras med andra referenstyper. Därför genererar jämförelser med null inte ett undantag.
Note
För varje testelement skickas value till lämplig IComparable<T> implementering, även om value är null. Implementeringen IComparable<T> avgör alltså hur ett visst element jämförs nullmed .
Den här metoden är en O(log n)-åtgärd, där n är för Lengtharray.
Se även
Gäller för
BinarySearch<T>(T[], Int32, Int32, T)
- Källa:
- Array.cs
- Källa:
- Array.cs
- Källa:
- Array.cs
- Källa:
- Array.cs
- Källa:
- Array.cs
Söker i ett område med element i en endimensionell sorterad matris efter ett värde med hjälp av det IComparable<T> generiska gränssnittet som implementeras av varje element i Array och efter det angivna värdet.
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
Typparametrar
- T
Typ av element i matrisen.
Parametrar
- array
- T[]
Den sorterade endimensionella, nollbaserade sökfunktionen Array .
- index
- Int32
Startindexet för intervallet som ska sökas.
- length
- Int32
Längden på det intervall som ska sökas.
- value
- T
Objektet som ska sökas efter.
Returer
Indexet för angivet value i angivet array, om value hittas, annars ett negativt tal. Om value inte hittas och value är mindre än ett eller flera element i arrayär det negativa talet som returneras bitvis komplementet till indexet för det första elementet som är större än value. Om value inte hittas och value är större än alla element i arrayär det negativa talet som returneras bitvis komplement (indexet för det sista elementet plus 1). Om den här metoden anropas med en icke-sorterad arraykan returvärdet vara felaktigt och ett negativt tal kan returneras, även om value det finns i array.
Undantag
array är null.
index är mindre än den nedre gränsen för array.
-eller-
length är mindre än noll.
index och length ange inte ett giltigt intervall i array.
-eller-
value är av en typ som inte är kompatibel med elementen arrayi .
T implementerar inte det IComparable<T> allmänna gränssnittet.
Kommentarer
Den här metoden stöder inte sökning i matriser som innehåller negativa index.
array måste sorteras innan den här metoden anropas.
Om matrisen inte innehåller det angivna värdet returnerar metoden ett negativt heltal. Du kan använda bitvis komplementoperator (~ i C#, Not i Visual Basic) på det negativa resultatet för att skapa ett index. Om det här indexet är lika med matrisens storlek finns det inga element som är större än value i matrisen. Annars är det indexet för det första elementet som är större än value.
T måste implementera det IComparable<T> allmänna gränssnittet, som används för jämförelser. Elementen array i måste redan sorteras i ökande värde enligt den sorteringsordning som definieras av implementeringen IComparable<T> . Annars kan resultatet vara felaktigt.
Duplicerade element tillåts.
Array Om innehåller mer än ett element som är lika med valuereturnerar metoden indexet för endast en av förekomsterna och inte nödvändigtvis den första.
null kan alltid jämföras med andra referenstyper. Därför genererar jämförelser med null inte ett undantag.
Note
För varje testelement skickas value till lämplig IComparable<T> implementering, även om value är null. Implementeringen IComparable<T> avgör alltså hur ett visst element jämförs nullmed .
Den här metoden är en O(log n)-åtgärd, där n är length.
Se även
Gäller för
BinarySearch<T>(T[], Int32, Int32, T, IComparer<T>)
- Källa:
- Array.cs
- Källa:
- Array.cs
- Källa:
- Array.cs
- Källa:
- Array.cs
- Källa:
- Array.cs
Söker i ett område med element i en endimensionell sorterad matris efter ett värde med hjälp av det angivna IComparer<T> allmänna gränssnittet.
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
Typparametrar
- T
Typ av element i matrisen.
Parametrar
- array
- T[]
Den sorterade endimensionella, nollbaserade sökfunktionen Array .
- index
- Int32
Startindexet för intervallet som ska sökas.
- length
- Int32
Längden på det intervall som ska sökas.
- value
- T
Objektet som ska sökas efter.
- comparer
- IComparer<T>
Den IComparer<T> implementering som ska användas vid jämförelse av element.
-eller-
null för att använda implementeringen IComparable<T> av varje element.
Returer
Indexet för angivet value i angivet array, om value hittas, annars ett negativt tal. Om value inte hittas och value är mindre än ett eller flera element i arrayär det negativa talet som returneras bitvis komplementet till indexet för det första elementet som är större än value. Om value inte hittas och value är större än alla element i arrayär det negativa talet som returneras bitvis komplement (indexet för det sista elementet plus 1). Om den här metoden anropas med en icke-sorterad arraykan returvärdet vara felaktigt och ett negativt tal kan returneras, även om value det finns i array.
Undantag
array är null.
index är mindre än den nedre gränsen för array.
-eller-
length är mindre än noll.
index och length ange inte ett giltigt intervall i array.
-eller-
comparer är null, och value är av en typ som inte är kompatibel med elementen arrayi .
comparer är nulloch T implementerar inte det IComparable<T> allmänna gränssnittet.
Kommentarer
Den här metoden stöder inte sökning i matriser som innehåller negativa index.
array måste sorteras innan den här metoden anropas.
Om matrisen inte innehåller det angivna värdet returnerar metoden ett negativt heltal. Du kan använda bitvis komplementoperator (~ i C#, Not i Visual Basic) på det negativa resultatet för att skapa ett index. Om det här indexet är lika med matrisens storlek finns det inga element som är större än value i matrisen. Annars är det indexet för det första elementet som är större än value.
Jämförelsen anpassar hur elementen jämförs. Du kan till exempel använda en System.Collections.CaseInsensitiveComparer som jämförelse för att utföra skiftlägesokänsliga strängsökningar.
Om comparer inte nulljämförs elementen array i med det angivna värdet med den angivna IComparer<T> allmänna gränssnittsimplementeringen. Elementen array i måste redan sorteras i ökande värde enligt sorteringsordningen som definieras av comparer. Annars kan resultatet vara felaktigt.
Om comparer är nullgörs jämförelsen med den IComparable<T> allmänna gränssnittsimplementeringen som tillhandahålls för typen T. Elementen array i måste redan sorteras i ökande värde enligt den sorteringsordning som definieras av implementeringen IComparable<T> . Annars kan resultatet vara felaktigt.
Duplicerade element tillåts.
Array Om innehåller mer än ett element som är lika med valuereturnerar metoden indexet för endast en av förekomsterna och inte nödvändigtvis den första.
null kan alltid jämföras med andra referenstyper. Därför genererar jämförelser med null inte ett undantag när du använder IComparable<T>.
Note
För varje testelement skickas value till lämplig IComparable<T> implementering, även om value är null. Implementeringen IComparable<T> avgör alltså hur ett visst element jämförs nullmed .
Den här metoden är en O(log n)-åtgärd, där n är length.