ALGORITMIZACE A ZÁKLADY PROGRAMOVÁNÍ ŘAZENÍ PRVKŮ – PŘÍMOU VÝMĚNOU (BUBBLESORT) Vytvořila: RNDr. Ivanka Dvořáčková Gymnázium K. V. Raise, Hlinsko, Adámkova 55leden 2013
PRINCIP – algoritmus založený na opakovaném porovnávání sousedních prvků a jejich případné výměně – musí se provést tolik průchodů polem, dokud nedojde k požadované- mu uspořádání, což poznáme podle toho, že v průběhu průchodu polem nedojde k výměně hodnot u žádné dvojice sousedních prvků – výměnu hodnot signalizujeme přidáním příkazu obsahující proměnnou např. VYMENA (její hodnota je typu boolean – true (ano), false (ne) – signalizuje, zda došlo či nedošlo k výměně) za sekvenci příkazů provádějících vzájemnou výměnu prvků
průchod polem 420 Výměna: ANO průchod polem 4 6 Výměna: ANO průchod polem 1 6 Výměna: ANO průchod polem 1 6 Výměna: ANO průchod polem 1 4 Výměna: ANO pr. p. Výměna: NE Příklad: Vysvětlete na posloupnosti čísel 6, 20, 4, 10, 1, 12, 3 a doplňte tabulku.
Příklad a) Je dána posloupnost N celých kladných čísel. Vytvořte program, který – prvky posloupnosti načte do jednorozměrného pole, – prvky posloupnosti uspořádá podle velikosti vzestupně s využitím metody bubblesort (řazení přímou výměnou), – nakonec uspořádanou posloupnost vypíše. b) Vytvořený program přepište a odlaďte na počítači pro zadanou posloupnost čísel, potom pro jinou zvolenou posloupnost čísel.
program BubbleSort; uses CRT; var N, I, POM: integer; VYMENA: boolean; A: array [1..100] of integer; begin clrscr; write ('Zadej počet prvků pole N, max. 100: '); readln (N); writeln ('Zadej jednotlivé prvky pole oddělené mezerou: '); for I := 1 to N do read (A[I]); repeat VYMENA := false; for I := 1 to (N – 1) do if A[I] > A[I+1] then begin POM:=A[I]; A[I]:=A[I+1]; A[I+1]:=POM; VYMENA := true end until not VYMENA; writeln ('Výsledné pole je: '); for I:=1 to N do write (A[I],' '); readkey end.
Pro zájemce Na internetu, např. na wikipedii, vyhledejte a prostudujte další varianty této metody řazení prvků, případně jiných efektivnějších metod. V případě, že ovládáte procedury, přepište program s využitím procedur.
Použité zdroje HUBKA, J. a L. SILVERIO. Sbírka příkladů ze základů programování. Krajský pedagogický ústav Hradec Králové: Sdružení uživatelů počítačů JSEP a SMEP Hradec Králové, Všechny grafické prvky a obrázky algoritmů jsem vytvořila sama s využitím volně šiřitelného programu Open Office.