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

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

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

Задача 20:

Програма лінійного сортування по не зростанню

const count=20;

m: array [1.. count] 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; а: integer;

begin

writeln ( 'Початковий масив : ' ) ;

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

writeln;

а:=0; { обнуляємо лічильник ітерацій }

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

for i:=1 to count-1 do

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

for j:=i+1 to count do

begin

а:=a+1;

if m[i]<m[j] then { якщо в не відсортованій частині масиву знайшли елемент}

{більший, ніж i-й, то міняємо їх місцями } begin

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

m[i]:=m[j];

m[j] := buf;

end;

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

writeln('; ітерація # ',a);

end;

end.

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

Задача 21:

Бульбашковий метод.

Масив переглядають зліва направо. Кожен попередній елемент порівнюється з подальшим. Якщо попередній елемент більший за подальший, то попередній і подальший елементи міняються місцями.

Program sort1;

const n=10;

label metka;

var a: array [1..n] of integer;

i, c, k : integer;

begin

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

metka: k=0; {лічильник перестановок}

for i:=1 to n-1 do

if a[i]>a[i+1] then begin c:=a[i];

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

a[i+1]:=c;

k:=1;

end;

if k=1 then goto metka

else writeln(‘впорядкований ‘);

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

еnd.

Теж саме, але з використанням вкладених циклів:Program sort2;

const n=10;

var a: array [1..n] of integer;

i, k, c : integer;

begin

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

for i:=1 to n-1 do

for k:=1 to n-i do

if a[k]>a[k+1] then begin c:=a[k];

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

a[k+1]:=c;

end;

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

еnd.

Задача 22:

Дана програма заміни від’ємних елементів масиву на їх модулі:

program mass;

const n=30;

type mas=array[1..n] of integer;

var a : mas;

i : integer;

begin

for i:=1 to n do {введення масиву}

begin write(‘введіть ‘,i, ‘—ий елемент масиву); readln(a[i]);

end;

for i:=1 to n do writeln(‘a[‘,i,’]=’,a[i]); {виведення масиву}

for i:=1 to n do

if a[i]<0 then a[i]:=abs(a[i]);

for i:=1 to n do writeln(‘a[‘,i,’]=’,a[i]); { виведення нового масиву}

end.

Завдання 11:

Змініть програму так, щоб вона виконувала:

  1. додати до кожного елементу масиву число 25;

  2. якщо елемент парний, то додати до нього перший, якщо непарний - останній елемент масиву. Перший і останній елементи не змінювати.

  3. знайти значення максимального по модулю елементу масиву;

  4. знайти середнє арифметичне значення парних елементів.

Дії з двовимірними масивами.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]