неділя, 28 вересня 2014 р.
Список задач для програмування
понеділок, 15 вересня 2014 р.
неділя, 14 вересня 2014 р.
Сортуванння елементів рядка
СОРТУВАННЯ ЕЛЕМЕНТІВ
РЯДКА МЕТОДОМ БУЛЬБАШКИ
Цей метод ґрунтується на перестановці сусідніх чисел. Для впорядкування
чисел в рядку здійснюємо повторні проходи по рядку, кожного разу переміщаючи
найменший елемент частини масиву, що залишився, на початок.
Переміщення елементів рядка здійснюється таким чином: переглядаємо рядок
справа на ліво, порівнюючи пари сусідніх чисел; якщо числа в парі розміщені в
порядку зростання, то залишаємо їх без змін, а якщо в порядку спадання, то
міняємо їх місцями.
В результаті першого проходу найменше число буде поставлене на початок
масиву. У другому проході такі операції виконуються над елементами з останнього
до другого, у третьому проході такі операції виконуються над елементами з
останнього до третього, і так далі. Впорядкування рядка буде закінчено, якщо
при проході рядка не виконуватиметься жодної перестановки елементів рядка. Факт
перестановки фіксується за допомогою допоміжної змінної prap, яка на початку має значення 0 і
набуває значення 1 тоді, коли
виконуватиметься перестановка в якій-небудь парі. Прапорець prap, ще використовується з
метою економії часу в тому випадку, коли частина рядка наперед впорядкована.
Програмa на мові PASCAL для розташування 10-ти чисел в порядку зростання,
від найменшого числа до найбільшого числа методом бульбашки.
Program Bubblesort;
CONST {оголошується
перелік усіх постійних величин}
n=10; {оголошується постійна
величина, це кількість чисел у рядку, їх буде рівно 10}
TYPE {оголошується
тип (MASSIV)рядок цілих чисел
і кількість місць для них від 1 до n в діапазоні integer }
MASSIV=array[1..n] of integer;
VAR {оголошується перелік усіх змінних величин, що використовуються у
програмі}
i, j, adop, prap: longint; {оголошуються довгі цілі змінні величини, що будуть
використовуватися у програмі}
A: Massiv; {оголошується рядок із змінних величин,
що будуть використовуватися у програмі}
BEGIN {оголошується
рядок початок виконання алгоритмічних дії програми}
writeln('Введіть елементи рядка');
for i:=1 to n do {цикл з
лічильником у зростаючому порядку для присвоєння
усім десяти елементам рядка
А[i] довільних чисел }
begin
writeln;
write('À[',i,'] = '); {попереджає і записує на
моніторі чергове місце для введення з клавіатури поточного числа рядка}
read (A[i]); { виконується 10 разове введення з клавіатури на поточне місце рядка нового числа }
end; {оголошується
кінець виконання циклу для введення рядка із десяти цілих чисел }
writeln('Рядок чисел до сортування');
{оголошується про запис на моніторі рядка із
десяти цілих чисел }
writeln;
for i:=1
to n do writeln(a[i]:5);
i:=2;
repeat {оголошується про цикл з після умовою для сортування рядка із десяти цілих
чисел }
prap:=0;
for j:=n downto i do {оголошується
про цикл з лічильником у зворотному
напрямі для сортування рядка цілих
чисел }
begin
if A[j]<A[j-1] then {оголошується неповне розгалуження для порівняння двох сусідніх цілих
чисел }
begin
adop:=A[j-1]; {якщо вірне порівняння(для порядку
зростання) двох сусідніх цілих чисел , то відбувається їх обмін}
A[j-1]:=A[j];
A[j]:=adop;
prap:=1; {якщо фіксується, що відбувався
обмін чисел}
end;
end;
i:=1+ i; {це параметр циклу з лічильником у зворотному напрямі, потрібний для
обмеження несортованої кількості цілих чисел
}
until prap=0; {якщо виконується умова prap=0, не було обміну
двох чисел, то цикл завершується}
writeln; {оголошується про запис на моніторі рядка із
десяти цілих чисел, що розташовані в порядку зростання }
writeln('Рядок чисел після сортування');
writeln;
for i:=1 to n do writeln('A[',i,'] = ', A[i],';
'); {цикл з лічильником у зростаючому порядку для виводу на монітор усіх
десяти елементів рядка А[i] в порядку зростання }
writeln;
end.
субота, 13 вересня 2014 р.
Підписатися на:
Дописи (Atom)