Сортировка и поиск массивов в C#
Класс Array предоставляет несколько полезных методов работы с массивами. Два из них позволяют сортировать и искать массивы.
В следующем коде показано, как программа использует метод Сортировка класса Array для сортировки массива случайных данных.
// Значения данных.
private const int NumValues = 100;
private int[] Values;
// Сделайте некоторые случайные значения.
private void Form1_Load(object sender, EventArgs e)
{
// Создаем случайные значения.
Random rand = new Random();
Values = new int[NumValues];
for (int i = 0; i < NumValues; i++)
{
Values[i] = rand.Next(0, 100);
}
// Сортируем значения.
Array.Sort(Values);
// Отображение значений.
lstValues.DataSource = Values;
}
Этот код создает объект Random и массив Values. Затем он перебирает массив, назначая случайные значения для каждой записи.
Далее код вызывает метод Сортировка класса Array для сортировки значений. Он заканчивается отображением значений в ListBox.
В следующем коде показано, как программа использует метод BraySearch класса Array для поиска значения в массиве.
// Найдите значение.
private void btnSearch_Click(object sender, EventArgs e)
{
// Получить целевое значение.
int target = int.Parse(txtValue.Text);
// Попытаемся найти его.
int index = Array.BinarySearch(Values, target);
// Выберите значение.
if (index >= 0)
{
// Мы нашли цель. Выберите его.
lstValues.SelectedIndex = index;
}
else
{
// Мы не нашли цель. Выберите ближайшее значение.
index = -index;
if (index >= NumValues) index = NumValues - 1;
lstValues.SelectedIndex = index;
}
}
Код анализирует введенный текст и вызывает метод BraySearch класса Array класса, чтобы найти значение в массиве. Если BinarySearch находит значение, он возвращает индекс значения в массиве. Если значение появляется в массиве более одного раза, BinarySearch возвращает индекс произвольного элемента с целевым значением. (Он просто возвращает то значение, которое он обнаруживает первым во время поиска.)
Если значение не находится в массиве, BinarySearch возвращает отрицательный результат последнего индекса, который он просматривал при поиске. Если отрицательный результат возвращаемого значения не находится за пределами границ массива, то он дает индекс значения вид рядом с целевым значением, если оно присутствует. Позиция может быть не в том месте, где был бы целевой объект, но он должен быть достаточно близок.
