Метод BinarySearch
Метод BinarySearch класса List<T>
выполняет двоичный поиск по отсортированному
списку. Возвращает индекс или отрицательное число,
если элемент не найден. Есть перегрузка с
IComparer<T>.
Синтаксис
int index = list.BinarySearch(item);
int index = list.BinarySearch(item, comparer);
Пример
Давайте найдём число в уже отсортированном списке:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> nums = new List<int> {1, 2, 3, 4, 5};
Console.WriteLine(nums.BinarySearch(3));
}
}
Результат выполнения кода:
2
Пример
Давайте получим отрицательный индекс для отсутствующего:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> nums = new List<int> {1, 2, 3, 4, 5};
Console.WriteLine(nums.BinarySearch(6) < 0);
}
}
Результат выполнения кода:
True
Пример
Давайте отсортируем список и выполним поиск:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> nums = new List<int> {5, 1, 4, 2, 3};
nums.Sort();
Console.WriteLine(nums.BinarySearch(4));
}
}
Результат выполнения кода:
3
Пример
Давайте найдём строку в отсортированном списке:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<string> items = new List<string> {"a", "b", "c", "d", "e"};
Console.WriteLine(items.BinarySearch("c"));
}
}
Результат выполнения кода:
2