Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Массивы. Сортировка элементов массива.




Массив представляет собой совокупность данных одного типа с общим для всех элементов именем. Элементы массива пронумерованы, и обратиться к каждому из них можно, указав его индекс (для одномерного массива) или несколько индексов (для многомерных массивов). В программировании количество индексов массива называют его размерностью.

Массив относится к группе структурных типов и описывается в разделе описания переменных в следующей форме:

Var <идентификатор >: А rrау [<тп индекса>] Of <mun компонент>;

Тип индекса может быть любым скалярным порядковым типом, кроме longint. Чаще всего в качестве типа индекса употребляется интервальный тип. Например, одномерный массив А, состоящий из 12 вещественных чисел опишется следующим образом:

Var А: аггау [1..12] Of Real;

Описание массива определяет, во-первых, размещение массива в памяти, во-вторых, правила его дальнейшего употребления в программе. Последовательные элементы массива располагаются в последовательных ячейках памяти (А[ 1 ], А[ 2 ] и т. д.), причем значения индекса не должны выходить из диапазона 1.. 12. В качестве индекса может употребляться любое выражение соответствующего типа. Например, A [i+j], A [m div 2].

Например, в программе могут присутствовать следующие описания: Var Cod: array [Char] Of 1..100;

L: array [Boolean] Of Char;

В такой программе допустимы следующие обозначения элементов массивов:

Cod ['х']; L[true]; Cod[chr(65)]; L[a>0];

Алгоритмы сортировки элементов массива.

Под сортировкой массива подразумевается процесс перестановки Элементов с целью упорядочивания их в соответствии с каким-либо критерием. Например, если имеется массив целых а, то после сортировки по возрастанию должно выполниться условие:

а'1,≤ а'2 ≤,...,≤ а'п

Так как можно сравнивать переменные типов INTEGER, REAL, CHAR и STRING, то можно сортировать массивы этих типов.

Задача сортировки распространена в информационных системах и используется как предварительный этап задачи поиска, так как поиск в упорядоченном (отсортированном) массиве проводится намного быстрее, чем в неупорядоченном.

Существует много методов (алгоритмов) сортировки массивов. Рассмотрим два метода:

· метод прямого выбора

· метод прямого обмена

1). Сортировка выбором.

Пример. Используя сортировку выбором, упорядочить по возрастанию элементы одномерного массива, состоящего из 5 целых чисел. Для демонстрации процесса сортировки программа выводит массив после каждого обмена элементов.

Program Sort_Vybor;

Const

size=5;

Var

a: array[1.. size ] of integer;

i: integer; { номер элемента, от которого ведется поиск мин. эл-та. }

min: integer; { номер минимального элемента }

j: integer; { номер элемента, сравниваемого с минимальным }

buf: integer; { буфер, используемый при обмене элементов массива }

k: integer;

Begin

writeln (′Сортировка массива.′);

write (′Введите′ ֽ size:3 ֽ′ целых в одной строке ′);

writeln (′через пробел и нажмите <Enter>′);

for k:=1 to size do read (a [k]);

writeln (′Сортировка ′);

for i:=1 to size-1 do

Begin

{ поиск мин. элемента в части массива от a(i) до a(size) }

min:=I;

for j:=i+1 to size do begin

if a[j]< a[min] then min:=j;

{ поменяем местами a[min] и a[i] }

buf:= a[i];

a[i]:= a[min];

a[min]:= buf;

{ выведем массив }

for k:=1 to size do write(a[k], ′ ′);

writelen;

End;

End;

writeln (′ Массив отсортирован. ′);

End.

2). Сортировка обменом (методом "пузырька")

В основе алгоритма лежит обмен соседних элементов массива. Каждый элемент массива, начиная с первого, сравнивается со следующим и если он больше следующего, то элементы меняются местами. Таким образом, элементы с меньшим значением продвигаются к началу массива (всплывают), а элементы с большим значением – к концу массива (тонут), поэтому этот метод иногда называют "пузырьковым". Этот процесс повторяется на единицу меньше раз, чем элементов в массиве.

Пример. Используя сортировку обменом, упорядочить по возрастанию элементы одномерного массива, состоящего из 5 целых чисел. Для демонстрации процесса сортировки программа выводит массив после каждого цикла обменов.

Program Sort;

Const

size=5;

Var

a: array[1.. size ] of integer;

i: integer; { счетчик циклов }

k: integer; { текущий индекс элемента массива }

buf: integer;

Begin

writeln (′Сортировка массива пузырьковым методом.′);

write (′Введите′ ֽ size:3 ֽ′ целых в одной строке ′);

writeln (′через пробел и нажмите <Enter>′);

for k:=1 to size do read (a [k]);

writeln (′Сортировка ′);

for i:=1 to size-1

do Begin

for k:=1 to size-1

do begin

if a[k]> a[k+1]

then begin

{ поменяем местами a[k] и a[k+1] }

buf:= a[k];

a[k]:= a[k+1];

a[k+1]:= buf;

End;

End;

for k:=1 to size do write(a[k], ′ ′);

writelen;

End;

writeln (′ Массив отсортирован. ′);

End.






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных