Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция Pascal_mat №8_9.doc
Скачиваний:
4
Добавлен:
02.12.2018
Размер:
197 Кб
Скачать
☆

Сортування вибором (виділенням).

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

Приклад сортування:

program vubir;

uses crt;

var n, i, j: integer; x: real;

a: array [1..255] of real;

begin

clrscr; randomize;

write ('Vvedit rozmirnist masuvy: ');

readln (n);

for i:=1 to n do

a[i]:=(random(100)-50)/5;

Заповнення масиву випадковими числами

writeln ('Pochatkovuj masuv:');

for i:=1 to n do write (a[i]:6:1);

виведення заповненого масиву на екран

for i:=1 to n-1 do

початок перебору всіх елементів масиву

for j:=i+1 to n do

розгляд всіх елементів після i-того

if a[j]<a[i]

порівняння поточного елементу з усіма наступними

then begin

x:=a[i];

обмін місцями поточного елемента з найменшим, що розташований після нього

a[i]:=a[j];

a[j]:=x

end;

writeln; writeln;

writeln ('Vidsortirovanuj masuv:');

for i:=1 to n do write (a[i]:6:1);

виведення відсортованого масиву

readln

end.

Сортування обміном (метод «бульбашки»).

Принцип методу: Перегляд масиву здійснюється від кінця до початку. Якщо два сусідніх елемента не розташовані у порядку зростання, то вони міняються місцями. За один перегляд спливає одна «бульбашка». Необхідно виконати (n-1) перегляд таблиці.

Приклад сортування:

program bylbashka;

uses crt;

var n, i, j, x: integer;

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

begin

clrscr; randomize;

write ('Vvedit rozmirnist masuvy: ');

readln (n);

for i:=1 to n do

Заповнення масиву випадковими числами

a[i]:=(random(50)-25);

writeln ('Pochatkovuj masuv:');

for i:=1 to n do write (a[i],' ');

виведення заповненого масиву на екран

for i:=1 to n-1 do

перебір всіх елементів масиву до передостаннього

for j:=n downto i+1 do

перебір елементів з кінця до поточного

if a[j]<a[j-1]

порівняння з попереднім

then begin

x:=a[j];

обмін елементів місцями, якщо вони відповідають заданій умові – витіснення найбільшого (найменшого) елемента.

a[j]:=a[j-1];

a[j-1]:=x

end;

writeln; writeln;

writeln ('Vidsortirovanuj masuv:');

for i:=1 to n do write (a[i], ' ');

виведення відсортованого масиву

readln

end.