Сортировка и поиск массивов в 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 возвращает отрицательный результат последнего индекса, который он просматривал при поиске. Если отрицательный результат возвращаемого значения не находится за пределами границ массива, то он дает индекс значения вид рядом с целевым значением, если оно присутствует. Позиция может быть не в том месте, где был бы целевой объект, но он должен быть достаточно близок.