русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Двумерные и многомерные массивы


Дата добавления: 2013-12-23; просмотров: 1019; Нарушение авторских прав


Сортировка массива.

Существует много способов сортировки массива по возрастанию. Самый понятный и простой (но далеко не самый быстрый!) – сортировка обменом. Суть его в следующем: Программа ищет наименьший элемент и обменивает его с первым. Затем ищет наименьший из оставшихся и обменивает со вторым… Для обмена мы пользуемся тем, что, кроме массива, наименьшее число находится ещё в переменной min, поэтому на его место в массиве мы копируем число из начальных элементов массива, а туда копируем число из переменной min.

 

 
 
program sortirovka_obmenom; var a:array[1..20] of integer; i,k,min,Nmin:integer; begin randomize; {Сначала заполним массив} for i:=1 to 20 do begin a[i]:=1+random(99); write(a[i]:3); end; writeln; {Отсортируем по возраст. методом обмена} for i:=1 to 19 do begin{i показывает начало поиска} min:=a[i]; Nmin:=i; {просмотрим все остальные (после i)} for k:=i+1 to 20 do if a[k]<min then begin min:=a[k]; Nmin:=k; end; {Нашли минимальное число. Обменяем его с i-м} a[Nmin]:=a[i]; a[i]:=min; end; {Теперь распечатаем отсортированный массив} for i:=1 to 20 do write(a[i]:3); end.

 

 


Второй по простоте (и тоже медленный) способ – сортировка методом пузырька. Суть её в том, что при первом проходе каждый элемент сравнивается со следующим, и если порядок неправильный, они обмениваются. Для обмена используется переменная b, в которой временно сохраняется число. После первого прохода наибольший элемент уже на своём месте (в конце массива), поэтому второй проход делается до предпоследнего элемента, и т.д. … В приведенном фрагменте программы, сортирующем массив a по возрастанию методом пузырька, первый цикл считает проходы, а его счётчикi указывает, до какого элемента делать проверку (поэтому i уменьшается).



 
 

 

 


Иногда данные имеют табличный вид. Можно, конечно, расположить их подряд (строка за строкой) в обычном (он называется одномерным или линейным) массиве, но будет неудобно обращаться к таким элементам: их номер придётся высчитывать с помощью формулы N=(НомерСтроки-1)*ДлинуСтроки+Номер Столбца. Это (кроме неудобства) ещё и замедлит работу с массивом. Вместо этого можно использовать двумерный массив (массив из одномерных массивов). Фактически в памяти элементы массива тоже расположены подряд, но поиск элемента массива берёт на себя сам Паскаль, а мы ему указываем два индекса: номер строки и номер столбца. Например: a[5,4]. При описании такого массива указывают два диапазона – для каждого индекса:

a:array[1..20,1..10] of integer;. (Примечание: Для Паскаля несущественно, что мы указываем первым - строку или столбец. Просто в первом случае в памяти элементы массива укладываются подряд, построчно, строка за строкой, а во втором «постолбцово», столбец за столбцом)

program Tab_Umn; uses crt; var x,y:integer; p:array[1..9,1..9] of byte; begin clrscr; for x:=1 to 9 do for y:=1 to 9 do begin p[x,y]:=x*y; gotoxy(x*4; y*2); write(p[x,y]); end; end.
В качестве примера приведём программу, которая заполняет двумерный массив таблицей умножения и распечатывает его:

Иногда набор данных представляет собой несколько таблиц одинаковой размерности. Тогда требуется третий индекс, чтобы задать номер таблицы. В таких случаях используются трёхмерные массивы(массив из двумерных массивов). Пример трёхмерного массива – классный журнал. Первый индекс – номер предмета, второй – номер ученика и третий – номер урока. А содержимое такого массива – оценки учеников. Описание и использование трёхмерных массивов – аналогично двумерным.

Точно так же существуют четырёхмерные (стопка журналов), пятимерные (несколько стопок на полке), шестимерные (несколько полок в шкафу) и т.д. массивы. Паскаль позволяет использовать до 255 индексов, хотя это никому не нужно: 10-мерного массива достаточно, чтобы охватить оценки всех учеников во Вселенной. В реальности чаще всего обходятся 1–3-мерными массивами.

 



<== предыдущая лекция | следующая лекция ==>
Поиск минимального (максимального) элемента массива | Лаб. 12. Задачи с одномерными массивами


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.003 сек.