- •Лекція №7 Впоряднування одновимірних масивів. Метод ‘’бульбашки’’, вибору, включення, швидке сортування
- •4.5.1. Метод бульбашки.
- •4.5.2. Метод вибору.
- •4.5.3. Сортування за допомогою ознаки (прапорця).
- •4.5.4. Метод прямого включення.
- •4.5.5 Швидке сортування.
- •4.5.6. Розв’язування задач з використанням сортування масиву.
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.
Контрольні запитання.
Які методи сортування Ви знаєте?
Чому метод сортування названий методом “бульбашки”?
Чому дали назву методу “швидке сортування”?