Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Сортування й пошук. Статичні методи класу Array
Статичні методи класу Array дозволяють вирішувати найрізноманітніші завдання: 1. Copy - дозволяє копіювати весь масив або його частину в інший масив. 2. IndexOf, LastIndexOf - визначають індекси першого й останнього входження зразка в масив, повертаючи -1, якщо такого входження не виявлено. 3. Reverse - виконує обіг масиву, переставляючи елементи у зворотному порядку. 4. Sort - здійснює сортування масиву. 5. BinarySearch - визначає індекс першого входження зразка у відсортований масив, використовуючи алгоритм двійкового пошуку. Всі методи перевантажені й мають ряд модифікацій. Більшість із цих методів застосовано тільки до одномірних масивів. Приведу приклади різних операцій, доступних при роботі з масивами, завдяки спадкуванню від класу 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 нагадує про неможливість використання методів пошуку при роботі з багатомірними масивами. Приведу результати виводу. Рис. 14.3. Результати застосування статичних методів класу Array
|