Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конспект_лекций.doc
Скачиваний:
18
Добавлен:
26.04.2019
Размер:
1.11 Mб
Скачать

8.3.1. Программа сортировки массива «на месте»

«Сортировка на месте» - результаты сортировки размещаются в тех же информационных объектах, где задавались исходные данные для сортировки, т.е. вместо (на месте) исходных данных. Негативным последствием такой сортировки является безвозвратная утрата сведения об исходном порядке размещения информации в массиве, что тоже является информацией.

Пример программы, реализующей сортировку массива из четырех чисел по операции сравнения P(a,b)=a<b.

Program N7;

Type T=array[1..4] of real; {назвать именем Т – структуру информационных

объектов, которые состоят из четырех чисел

стандартного типа REAL }

Const a:T=(30, 40, -20, 30); {разместить в памяти переменную с именем

«а» типа Т и заполнить ее указанным содержимым}

Var i, j, ii, N: integer; R: real;

Begin

N:=4; { N - количество сортируемых элементов}

for ii:=1 to N-1 do {ii – счетчик повторений цикла

попарного сравнения элементов массива}

for i:=1 to N-ii do { i – номер первого из пары сравниваемых элементов массива }

if (a[i]<a[i+1])=false then {если операция сравнения дала отрицательный

результат, то переписать содержимое

сравниваемых элементов массива}

begin R:=a[i]; a[i]:=a[i+1]; a[i+1]:=R end;

{ вывод на экран содержимого отсортированного массива a[] }

for i:=1 to N do WRITE(a[i]:5:0);

End.

Результат работы программы :

-20 30 30 40

Трассировка программы ( пооператорное прослеживание выполнения программы):

Значения счетчиков циклов i и ii

Текущее содержимое

сортируемого массива

a[1]

a[2]

a[3]

a[4]

ii=1 i=1 (нет переписи)

30

40

-20

30

i=2 ( перепись 40 и –20)

30

-20

40

30

i=3 (перепись 40 и 30)

30

-20

30

40

ii=2 i=1 (перепись 30 и –20)

-20

30

30

40

i=2 (перепись 30 и 30)

-20

30

30

40

ii=3 i=1 (нет переписей)

-20

30

30

40

«Сортировка копии» - результаты сортировки размещаются в новых информационных объектах, которые создаются путем копирования исходных. Этот метод нерационально использует ОЗУ, поскольку сортируемое множество может состоять всего из нескольких тысяч элементов, но занимать многие мегабайты памяти.