Здавалка
Главная | Обратная связь

Лабораторна робота № 29-30. Масиви. Методи сортування.



Методичні рекомендації

Сортування - це процес упорядкування набору даних одного типу по зростанню чи спаданню значення якої-небудь ознаки. При сортуванні елементи масиву міняються місцями таким чином, що їхні значення виявляються упорядкованими чи по зростанню, чи по спаданню. Якщо в масиві є однакові елементи, то говорять про сортування чи по неспаданню чи по незростанню. У більшості випадків мова йде про сортування одномірного масиву.

Звичайна постановка задачі по сортуванню масиву виглядає в такий спосіб: програма повинна вивести несортований масив цілих чисел на екран, виконати його сортування, а потім вивести відсортований масив.

Розглянемо два методи сортування по незростанню для того самого масиву m з 20 цілих чисел. Для спостереження поточного стану масиву після кожної перестановки елементів будемо виводити його на екран. Для зручності налагодження і тестування масив задається у вигляді типізованої константи.

Лінійне сортування (сортування добором)

Ідея лінійного сортування по незростанню полягає в тім, щоб, послідовно переглядаючи весь масив, відшукати найбільше число і поміняти його місцями з першим елементом. Потім проглядаються елементи масиву, починаючи з другого, знову знаходиться найбільший, котрий міняється місцями з другим і т.д.

const count=20;

m: array [1..count] of byte = (9,11,12,3,19,1,5,17,10,18,3,19,17,9,12,20,20,19,2,5);

var i,j,buf,l: byte; a: integer;

begin

writeln('Вихідний массив:');

for i:=l to count do write(' ', m[i]);

writeln; readln;

{зміна розміру невідсортованої частини масиву}

for i:=1 to count-1 do

{порівнюємо почергово i-й елемент невідсортованої частини масиву з усіма від i+1-го до кінця}

for j:=i+l to count do

begin

if m[i]<m[j] then

{ якщо в невідсортованій частині масиву знайшли елемент, більший, ніж і-й, то міняємо їх місцями}

begin

buf:=m[i]; { buf — буфер обміну }

m[i]:=m[j] ;

m[j]:=buf;

end;

for l:=1 to count do write(' ', m[l]); {після сортування}

end;

end.

Сортування методом "бульбашки"

“Бульбашковий” метод сортування – заснований на тому, що в процесі виконання алгоритму більш "легкі" елементи масиву поступово "спливають". Особливістю даного методу є порівняння, а потім, якщо потрібно, і перестановка сусідніх елементів

const count=20;

m: array [1..count] of byte = (9,11,12,3,19,1,5,17,10,18,3,19,17,9,12,20,20,19,2,5);

var i,j,buf,l: byte;

begin

writeln('Вихідний массив:');

for i:=l to count do write(' ',m[i]);

writeln;

readln;

for i:=2 to count do

begin

for j:=count downto i do

begin

if m[j-l]<m[j] then { якщо елемент праворуч більше елемента}

{ ліворуч, то "витісняємо" його вліво - бульбашка "спливає"}

begin

buf:=m[j-l]; { перестановка елементів }

m[j-l]:=m[j];

m[j]:=buf;

end;

for l:=1 to count do write(' ',m[l]);

end;

end;

end.

 

Завдання 1.

Заповнити матрицю розмірності 20х20 елементів випадковими числами. Рядок, номер якого відповідає Вашому варіанту відсортувати одним з методів за неспаданням. Результат вивести на екран.

 

Завдання 2.

Заповнити матрицю розмірності 20х20 елементів випадковими числами. Елементи головної діагоналі відсортувати за незростанням.

 

 







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.