Array.BinarySearch(Array, int32, int32, Object) 方法用於在一個一維排序數組中的一係列元素中搜索一個值,使用數組的每個元素和指定值實現的IComparable接口。它僅在用戶定義的指定邊界內搜索。
用法:
public static int BinarySearch(Array array, int index, int length, object value);
參數:
- array:它是一維數組,我們必須在其中搜索元素。
- index:它是您要開始搜索的範圍的起始索引。
- length:它是我們要搜索的範圍的長度。
- value:這是我們要尋找的價值。
返回值:如果找到該值,則返回指定數組中指定值的索引,否則返回負數。返回值有以下幾種不同的情況:
- 如果未找到該值並且 value 小於數組中的一個或多個元素,則返回的負數是大於 value 的第一個元素的索引的按位補碼。
- 如果未找到該值並且該值大於數組中的所有元素,則返回的負數是(最後一個元素的索引加 1)的按位補碼。
- 如果使用未排序的數組調用此方法,則返回值可能不正確並且可能返回負數,即使該值存在於數組中。
異常:
- ArgumentNullException:如果數組為空。
- RankException:如果數組是多維的。
- ArgumentOutOfRangeException:如果範圍小於下限或長度小於 0。
- ArgumentException:如果索引和長度未指定數組中的有效範圍,則值的類型與數組元素不兼容。
- InvalidOperationException:如果 value 未實現 IComparable 接口,並且搜索遇到未實現 IComparable 接口的元素。
以下示例程序旨在說明上麵討論的方法:
範例1:
// C# Program to illustrate the use of
// Array.BinarySearch(Array, Int32,
// Int32, Object) Method
using System;
using System.IO;
class GFG {
// Main Method
static void Main()
{
// initializing the integer array
int[] intArr = {42, 5, 7, 12, 56, 1, 32};
// sorts the intArray as it must be
// sorted before using method
Array.Sort(intArr);
// printing the sorted array
foreach(int i in intArr) Console.Write(i + " "
+ "\n");
// intArr is the array we want to find
// and 1 is the starting index
// of the range to search. 5 is the
// length of the range to search.
// 32 is the object to search
int index = Array.BinarySearch(intArr, 1, 5, 32);
if (index >= 0) {
// if the element is found it
// returns the index of the element
Console.Write("Index:" + index);
}
else {
// if the element is not
// present in the array or
// if it is not in the
// specified range it prints this
Console.Write("Element is not found");
}
}
}
輸出:
1 5 7 12 32 42 56 Index:4
範例2:如果元素不在數組中,則打印負值或超出範圍。
// C# Program to illustrate the use of
// Array.BinarySearch(Array, Int32,
// Int32, Object) Method
using System;
using System.IO;
class GFG {
// Main Method
static void Main()
{
// initializing the integer array
int[] intArr = {42, 5, 7, 12,
56, 1, 32};
// sorts the intArray as it must be
// sorted before using Method
Array.Sort(intArr);
// printing the sorted array
foreach(int i in intArr) Console.Write(i + " "
+ "\n");
// intArr is the array we want to
// find. and 1 is the starting
// index of the range to search. 5 is
// the length of the range to search
// 44 is the object to search
int index = Array.BinarySearch(intArr, 1, 5, 44);
// as the element is not present
// it prints a negative value.
Console.Write("Index:" + index);
}
}
輸出:
1 5 7 12 32 42 56 Index:-7
參考:
相關用法
- C# Buffer.BlockCopy(Array, Int32, Array, Int32, Int32)用法及代碼示例
- C# Array.BinarySearch(Array, Int32, Int32, Object, IComparer)用法及代碼示例
- C# Int32.GetTypeCode用法及代碼示例
- C# Int32.GetHashCode用法及代碼示例
- C# Int32.CompareTo用法及代碼示例
- C# Int32.Equals用法及代碼示例
- C# Int32.Parse(String)用法及代碼示例
- C# File.Create(String, Int32)用法及代碼示例
- C# File.Create(String, Int32, FileOptions)用法及代碼示例
- C# File.Create(String, Int32, FileOptions, FileSecurity)用法及代碼示例
- C# Int32.MaxValue用法及代碼示例
- C# Int32.MinValue用法及代碼示例
- C# Char.ConvertToUtf32(String, Int32)用法及代碼示例
- C# Char.IsControl(String, Int32)用法及代碼示例
- C# Char.IsHighSurrogate(String, Int32)用法及代碼示例
- C# Char.IsSurrogate(String, Int32)用法及代碼示例
- C# Char.IsLowSurrogate(String, Int32)用法及代碼示例
- C# Char.IsSurrogatePair(String, Int32)用法及代碼示例
- C# Char.ConvertFromUtf32(Int32)用法及代碼示例
- C# Int32和UInt32的區別用法及代碼示例
注:本文由純淨天空篩選整理自Krishna_Sai_Ketha大神的英文原創作品 Array.BinarySearch(Array, Int32, Int32, Object) Method with examples in C#。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。