Чтение онлайн

ЖАНРЫ

C# 4.0 полное руководство - 2011

Шилдт Герберт

Шрифт:

элементов, определяемых параметром length. Массив keys содержит ключи сортировки, а массив i terns значения, связанные с этими ключами. Следовательно, оба массива должны содержать

пары “ключ-значение". После сортировки элементы обоих массивов располагаются в заданных пределах по порядку возрастания ключей

public static void

Сортирует по нарастающей два одномерных мас

Sort<TKey, TValue>(TKey[]

сива

в заданных пределах, начиная с элемента,

keys, TValue[] items, int

указываемого по индексу index, и включая число

index, int length)

элементов, определяемых параметром length. Массив keys содержит ключи сортировки, а массив i terns — значения, связанные с этими ключами. Следовательно, оба массива должны содержать пары “ключ-значение". После сортировки элемен

ты обоих массивов располагаются в заданных пределах по порядку возрастания ключей

public static void

Сортирует по нарастающей два одномерных мас

Sort(Array keys, Array

сива в заданных пределах, начиная с элемента,

items, int index, int

указываемого по индексу index, и включая число

length, IComparer comparer)

элементов, определяемых параметром length, а также используя способ сравнения, задаваемый параметром comparer. Массив keys содержит ключи сортировки, а массив items значения, связанные с этими ключами. Следовательно, эти два массива должны содержать пары “ключ-значение". После сортировки элементы обоих мас

сивов располагаются в заданных пределах по порядку возрастания ключей

public static void

Сортирует по нарастающей два одномерных мас

Sort<TKey, TValue>(TKey[]

сива в заданных пределах, начиная с элемента,

keys, TV items, int index,

указываемого по индексу index, и включая число

int length, Icomparer<TKey>

элементов, определяемых параметром length, а

comparer)

также используя способ сравнения, задаваемый параметром comparer. Массив keys содержит ключи сортировки,,а массив items значения, связанные с этими ключами. Следовательно, эти два массива должны содержать пары .“ключ-

значение". После сортировки элементы обоих массивов

располагаются в заданных пределах по порядку возрастания ключей

Метод

Назначение

public static bool

Возвращает логическое значение true, если все

TrueForAll<T>(T[] array,

элементы массива array удовлетворяют условию

Predicate<T> match)

предиката, задаваемого параметром match. Если один или более элементов этого массива не удовлетворяют заданному условию, то возвращается логическое значение false

Сортировка и поиск в массивах

Содержимое массива нередко приходится сортировать. Для этой цели в классе Array предусмотрен обширный ряд сортирующих методов. Так, с помощью разных вариантов метода Sort можно отсортировать массив полностью или в заданных пределах либо отсортировать два массива, содержащих соответствующие пары "ключ-значение". После сортировки в массиве можно осуществить эффективный поиск, используя разные варианты метода BinarySearch . В качестве примера ниже приведена программа, в которой демонстрируется применение методов Sort и BinarySearch для сортировки и поиска в массиве значений типа int.

// Отсортировать массив и найти в нем значение.

using System;

class SortDemo {

static void Main {

int [ ] nums = { 5, 4, 6, 3, 14, 9, 8, 17, 1, 24, -1, 0 };

// Отобразить исходный порядок следования.

Console.Write("Исходный порядок следования: "); foreach(int i in nums)

Console.Write(i + " ") ;

Console.WriteLine;

// Отсортировать массив.

Array.Sort(nums);

// Отобразить порядок следования после сортировки.

Console.Write("Порядок следования после сортировки: "); foreach(int i in nums)

Console.Write(i + " ");

Console.WriteLine ;

// Найти значение 14.

int idx = Array.BinarySearch(nums, 14);

Console.WriteLine("Индекс элемента массива со значением 14: " + idx) ;

}

}

Вот к какому результату приводит выполнение этой программы.

Исходный порядок следования: 54 63 14 98 17 124-10 Порядок следования после сортировки: -101345689141724 Индекс элемента массива со значением 14: 9

В приведенном выше примере массив состоит из элементов типа int, который относится к категории типов значений. Все методы, определенные в классе Array, автоматически доступны для обработки массивов всех встроенных в C# типов значений. Но в отношении массивов ссылок на объекты это правило может и не соблюдаться. Так, для сортировки массива ссылок на объекты в классе типа этих объектов должен быть реализован интерфейс IComparable или IComparable<T>. Если же ни один из этих интерфейсов не реализован в данном классе, то во время выполнения программы может возникнуть исключительная ситуация в связи с попыткой отсортировать подобный массив или осуществить в нем поиск. Правда, реализовать оба интерфейса, IComparable и IComparable<T>, совсем нетрудно.

Поделиться с друзьями: