Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
30
Добавлен:
07.02.2016
Размер:
150.02 Кб
Скачать

4.5.6. Розв’язування задач з використанням сортування масиву.

Тепер розглянемо декілька задач на сортування.

Приклад 4.16. Впорядкувати k перших елементів масиву за зростанням.

type mas = array [1..100] of real;

var a: mas;

i, j, n, k: byte;

procedure swap (var x, y :real);

var c:real;

begin

c:=x; x:=y; y:=c;

end;

procedure vved (var a: mas; n:byte);

begin

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

writeln;

end;

procedure vived (a: mas; n:byte);

begin

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

writeln;

end;

begin writeln(‘введіть розмір масиву’);

readln(n);

vved (a,n);

writeln(‘введіть k’);

readln(k);

for i:=1 to k-1 do

for j:= i+1 to k do

if a[i]>a[j] then swap (a[i], a[j]);

vived(a, n);

end.

Приклад 4.17. Впорядкувати по спаданню парні елементи масиву, непарні залишити на своїх місцях.

type mas = array [1..100] of real;

var a: mas;

i, j, n, k: byte;

procedure swap (var x, y :real);

var c:real;

begin

c:=x; x:=y; y:=c;

end;

procedure vved (var a: mas; n:byte);

begin

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

writeln;

end;

procedure vived (a: mas; n:byte);

begin

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

writeln;

end;

begin writeln(‘введіть розмір масиву’);

readln(n);

vved (a,n);

for i:=1 to k-1 do

for j:= i+1 to k do

if (a[i]<a[j]) and (a[i]/2=int(a[i]/2)) and (a[j]/2=int(a[j]/2)) then swap (a[i], a[j]);

vived(a, n);

end.

Приклад 4.18.[6] За заданим масивом а[n] сформувати масив b[m], включивши в нього по спаданню k (1kn) найбільших елементів, які не співпадають між собою. Може бути m<k, якщо в масиві багато елементів, які співпадають.

type mas = array [1..100] of real;

var a, b: mas;

i, j, n, k: byte;

procedure swap (var x, y :real);

var c:real;

begin

c:=x; x:=y; y:=c;

end;

procedure vved (var a: mas; n:byte);

begin

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

writeln;

end;

procedure vived (a: mas; n:byte);

begin

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

writeln;

end;

begin writeln(‘введіть розмір масиву’);

readln(n);

writeln(‘введіть k’);

readln(k);

vved(a,n);

for i:=1 to k-1 do

for j:= i+1 to k do

if (a[i]<a[j]) then swap (a[i], a[j]);

b[1]:=x[1];

j:=2;

i:=1;

while i<=n-1 do

begin

while j<=k do

begin

if x[i]<>x[i+1] then b[j]:=x[i+1];

j:=j+1;

end;

i:=i+1;

end;

vived(b, j-1);

end.

Контрольні запитання.

  1. Які методи сортування Ви знаєте?

  2. Чому метод сортування названий методом “бульбашки”?

  3. Чому дали назву методу “швидке сортування”?

Соседние файлы в папке конспект лекцій 1 паск