![]() | 1 2 3 4 5 6 Многомерные массивыМассивы характеризуются таким понятием как ранг или количество измерений. Выше мы рассматривали массивы, которые имеют одно измерение (то есть их ранг равен 1) - такие массивы можно представлять в виде горзонтального ряда элемента. Но массивы также бывают многомерными. У таких массивов количество измерений (то есть ранг) больше 1. Массивы которые имеют два измерения (ранг равен 2) называют двухмерными. Например, создадим одномерный и двухмерный массивы, которые имеют одинаковые элементы:
Визуально оба массива можно представить следующим образом: Одномерный массив nums1
Двухмерный массив nums2
Поскольку массив nums2 двухмерный, он представляет собой простую таблицу. Все возможные способы определения двухмерных массивов:
Массивы могут иметь и большее количество измерений. Объявление трехмерного массива могло бы выглядеть так:
Соответственно могут быть и четырехмерные массивы и массивы с большим количеством измерений. Но на практике обычно используются одномерные и двухмерные массивы. Определенную сложность может представлять перебор многомерного массива. Прежде всего надо учитывать, что длина такого массива - это совокупное количество элементов.
В данном случае длина массива mas равна 12. И цикл foreach выводит все элементы массива в строку: 1 2 3 4 5 6 7 8 9 10 11 12 Но что если мы хотим отдельно пробежаться по каждой строке в таблице? В этом случае надо получить количество элементов в размерности. В частности, у каждого массива есть метод GetUpperBound(dimension), который возвращает индекс последнего элемента в определенной размерности. И если мы говорим непосредственно о двухмерном массиве, то первая размерность (с индексом 0) по сути это и есть таблица. И с помощью выражения mas.GetUpperBound(0) + 1 можно получить количество строк таблицы, представленной двухмерным массивом. А через mas.Length / rows можно получить количество элементов в каждой строке:
1 2 3 4 5 6 7 8 9 10 11 12 Массив массивовОт многомерных массивов надо отличать массив массивов или так называемый "зубчатый массив":
Здесь две группы квадратных скобок указывают, что это массив массивов, то есть такой массив, который в свою очередь содержит в себе другие массивы. Причем длина массива указывается только в первых квадратных скобках, все последующие квадратные скобки должны быть пусты: new int[3][]. В данном случае у нас массив nums содержит три массива. Причем размерность каждого из этих массивов может не совпадать. Зубчатый массив nums
Примеры массивов: Причем мы можем использовать в качестве массивов и многомерные:
Так здесь у нас массив из трех массивов, причем каждый из этих массивов представляет двухмерный массив. Используя вложенные циклы, можно перебирать зубчатые массивы. Например:
Основные понятия массивовСуммирую основные понятия массивов: Ранг (rank): количество измерений массива Длина измерения (dimension length): длина отдельного измерения массива Длина массива (array length): количество всех элементов массива Например, возьмем массив
Массив numbers двухмерный, то есть он имеет два измерения, поэому его ранг равен 2. Длина первого измерения - 3, длина второго измерения - 4. Длина массива (то есть общее количество элементов) - 12. Задачи с массивамиРассмотрим пару задач для работы с массивами. Найдем количество положительных чисел в массиве:
Вторая задача - инверсия массива, то есть переворот его в обратном порядке:
Поскольку нам надо изменять элементы массива, то для этого используется цикл for. Алгоритм решения задачи подразумевает перебор элементов до середины массива, которая в программе представлена переменной k, и обмен значений элемента, который имеет индекс i, и элемента с индексом n-i-1. 1 2 3 4 5 6 |