![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Сортировка и поиск. Статические методы класса Array
Статические методы класса Array позволяют решать самые разнообразные задачи:
Все методы перегружены и имеют ряд модификаций. Большинство из этих методов применимо только к одномерным массивам. Приведу примеры различных операций, доступных при работе с массивами, благодаря наследованию от класса Array: public void TestCollection(){ //операции над массивами int nc = 7; int[] col1 = new int[nc], col2 = new int[nc]; double[] col3 = new double[nc]; int[, ] col4 = new int[2, 2]; Arrs.CreateCollection(col1); Arrs.PrintCollection(" col1", col1); Arrs.CreateCollection(col2); Arrs.PrintCollection(" col2", col2); Arrs.CreateCollection(col3); Arrs.PrintCollection(" col3", col3); Arrs.CreateTwoDimAr(col4); Arrs.PrintCollection(" col4", col4); //сортировка, поиск, копирование // поиск элемента int first = Array.IndexOf(col1, 2); int last = Array.LastIndexOf(col1, 2); if (first == -1) Console.WriteLine(" Нет вхождений 2 в массив col1"); else if (first ==last) Console.WriteLine(" Одно вхождение 2 в массив col1"); else Console.WriteLine(" Несколько вхождений 2 в массив col1"); //first = Array.IndexOf(col4, 4); //только одномерный массив Array.Reverse(col1); Console.WriteLine(" Обращение массива col1: "); Arrs.PrintCollection(" col1", col1); //Копирование Array.Copy(col1, col3, col1.Length); Console.WriteLine(" Массив col3 после копирования массива col1: "); Arrs.PrintCollection(" col3", col3); Array.Copy(col1, 1, col2, 1, 2); Console.WriteLine(" копирование двух элементов col1 в col2: "); Arrs.PrintCollection(" col1", col1); Arrs.PrintCollection(" col2", col2); //быстрая сортировка Хоара Array.Sort(col1); Console.WriteLine(" Отсортированный массив col1: "); Arrs.PrintCollection(" col1", col1); first = Array.BinarySearch(col1, 2); Console.WriteLine(" Индекс вхождения 2 в col1: {0}", first); //Создание экземпляра (массива) Array my2Dar = Array.CreateInstance(typeof(double), 2, 3); Arrs.PrintCollection(" my2Dar", my2Dar); //клонирование my2Dar = (Array)col4.Clone(); Console.WriteLine(" Массив my2Dar после клонирования col4: "); Arrs.PrintCollection(" my2Dar", my2Dar); //копирование CopyTo col1.CopyTo(col2, 0); Console.WriteLine(" Массив col2 после копирования col1: "); Arrs.PrintCollection(" col2", col2); }В этой процедуре продемонстрированы вызовы различных статических методов класса Array. Для метода Copy показан вызов двух реализаций этого метода, когда копируется весь массив и часть массива. Закомментированный оператор вызова метода IndexOf напоминает о невозможности использования методов поиска при работе с многомерными массивами. Приведу результаты вывода, порожденные этим кодом.
|