Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 7 Массивы.doc
Скачиваний:
2
Добавлен:
02.11.2018
Размер:
215.04 Кб
Скачать

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

Под сортировкой массива подразумевается процесс перестановки элементов массива, с целью размещения элементов массива в определенном порядке.

Например, для целых чисел А после сортировки по возрастанию должно выполняться условие:

A[1]  A[2]  A[3]  . . .  A[size], где size – верхний индекс

Алгоритм сортировки:

1. Просмотреть массив от 1 элемента, найти min элемент и поместить его на место 1 элемента, а 1-й на место min.

2. Просмотреть массив от 2 элемента, найти min элемент и поместить его на место 2 элемента, а 2-й на место min

3. И так далее до последнего элемента.

Элементы массива А

A[ 1 ]= 2

A[ 2 ]= 6

A[ 3 ]= -5

A[ 4 ]= 3

A[ 5 ]= 20

A[ 6 ]= -10

A[ 7 ]= 8

A[ 8 ]= 0

A[ 9 ]= 9

A[ 10 ]= -2

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

-10 6 -5 3 20 2 8 0 9 -2

-10 -5 6 3 20 2 8 0 9 -2

-10 -5 -2 3 20 2 8 0 9 6

-10 -5 -2 0 20 2 8 3 9 6

-10 -5 -2 0 2 20 8 3 9 6

-10 -5 -2 0 2 3 8 20 9 6

-10 -5 -2 0 2 3 6 20 9 8

-10 -5 -2 0 2 3 6 8 9 20

-10 -5 -2 0 2 3 6 8 9 20

Отсортированный массив

-10 -5 -2 0 2 3 6 8 9 20

Задача3. Отсортировать массив целых чисел по возрастанию.

program Example7;

{$APPTYPE CONSOLE}

uses

SysUtils;

const N=10;

var

A : array[1..N] of integer;

i : byte; //номер элемента от которого ведется поиск min

j : byte; //номер элемента, сравниваемого с минимальным

k : byte; //индекс для ввода и вывода

min : integer; //минимальный элемент

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

begin

Writeln('Vvedite massive'); //ввод массива

for k := 1 to N do

begin

Write( 'A[ ' , k , ' ]= ' );

Readln( A [ k ] );

end;

Writeln;

Writeln('Sortirovka massive'); //сортировка массива

for i:=1 to N-1 do

begin

min:=i; //поиск минимального элемента

for j:=i+1 to N do

if A[ j ]<A[min] Then

min:=j; //поменять местами

buf:=A[ i ]; // A[min] и A[ i ],

A[ i ]:=A[min]; // используя буфер

A[min]:=buf;

for k:=1 to N do write(A[ k ],' ');

Writeln; //вывод промежуточного состояния

end;

Writeln; //вывод отсортированного массива

Writeln('Massive otsortirovan');

for k:=1 to N do Write(A[ k ], ' ');

Readln

end.