Зубчатый массив

Вид многомерной структуры данных
Структура памяти неровного массива.

В информатике , зубчатый массив , также известный как рваный массив [1] или нерегулярный массив [2] представляет собой массив массивов, в котором массивы-члены могут иметь разную длину, [3] создавая строки зубчатых краев при визуализации в качестве вывода. Напротив, двумерные массивы всегда прямоугольные [4], поэтому зубчатые массивы не следует путать с многомерными массивами , но первый часто используется для эмуляции второго.

Массивы массивов в таких языках, как Java, PHP, Python (многомерные списки), Ruby, C#.NET, Visual Basic.NET , Perl, JavaScript, Objective-C, Swift и Atlas Autocode, реализованы как векторы Илиффе .

Примеры

В C# и Java [5] зубчатые массивы можно создать с помощью следующего кода: [6]

int [][] c ; c = new int [ 2 ][]; // создает 2 строки c [ 0 ] = new int [ 5 ]; // 5 столбцов для строки 0 c [ 1 ] = new int [ 3 ]; // создает 3 столбца для строки 1             

В C и C++ зубчатый массив можно создать (в стеке) с помощью следующего кода:

int jagged_row0 [] = { 0 , 1 }; int jagged_row1 [] = { 1 , 2 , 3 }; int * jagged [] = { jagged_row0 , jagged_row1 };            

В C/C++ зубчатые массивы также можно создавать (в куче) с помощью массива указателей:

int * зазубренный [ 5 ]; jagged [ 0 ] = malloc ( sizeof ( int ) * 10 ); jagged [ 1 ] = malloc ( sizeof ( int ) * 3 );        

В C++/CLI зубчатый массив можно создать с помощью кода: [7]

using namespace System ; int main () { array < array < double > ^> ^ Arrayname = gcnew array < array < double > ^> ( 4 ); // массив содержит 4 //элемента return 0 ; }                 

В Фортране зубчатый массив можно создать с использованием производных типов с выделяемыми компонентами:

тип :: Jagged_type целое число , выделяемое :: строка (:) конец типа Jagged_type тип ( Jagged_type ) :: Jagged ( 3 ) Jagged ( 1 )% строка = [ 1 ] Jagged ( 2 )% строка = [ 1 , 2 ] Jagged ( 3 )% строка = [ 1 , 2 , 3 ]              

В Python зубчатые массивы не являются нативными, но можно использовать списочные генераторы для создания многомерного списка, который поддерживает любую размерную матрицу: [8]

multi_list_3d  =  [[[]  для  i  в  диапазоне ( 3 )]  для  i  в  диапазоне ( 3 )] # Производит: [[[], [], []], [[], [], []], [[], [], []]]multi_list_5d  =  [[[]  for  i  in  range ( 5 )]  for  i  in  range ( 5 )] # Производит: [[[], [], [], [], [], []], [[], [], [], [], [], []], [[], [], [], [], []], [[], [], [], []]]

Смотрите также

Ссылки

  1. ^ Кинг, КН (2008). Программирование на языке C. WW Norton. стр. 301. ISBN 978-0-393-97950-3.
  2. ^ Справочник по структурам данных и приложениям . CRC Press. 2004.
  3. ^ Джесси Либерти; Брайан Макдональд (18 ноября 2008 г.). Изучение C# 3.0. "O'Reilly Media, Inc.". стр. 210–. ISBN 978-0-596-55420-0.
  4. ^ Дон Бокс (2002). Essential .Net: The Common Language Runtime. Addison-Wesley Professional. стр. 138. ISBN 978-0-201-73411-9.
  5. ^ "Зубчатый массив в Java - GeeksforGeeks". GeeksforGeeks . 2016-02-03 . Получено 2018-08-13 .
  6. ^ Пол Дж. Дейтел; Харви М. Дейтел (26 сентября 2008 г.). C# 2008 для программистов. Pearson Education. стр. 40. ISBN 978-0-13-701188-9.
  7. ^ "Зубчатые массивы". FunctionX . Получено 26 ноября 2014 г. .
  8. ^ "Списки в Python Demystified". Alvin.io . Получено 31 января 2016 г. .
Получено с "https://en.wikipedia.org/w/index.php?title=Jagged_array&oldid=1268544599"