27. Sortowanie bąbelkowe, czyli każda liczba jest mniejsza od maksymalnej lub jej równa
N A T E J L E K C JI:
• dowiesz się, na czym polega sortowanie bąbelkowe;
• ułożysz algorytm realizujący sortowanie bąbelkowe;
• napiszesz program realizujący algorytm sortowania bąbelkowego.
Jedn ym z bardzo w ażnych zagadnień inform atycznych jest sortow anie. P o rząd
kowanie zbiorów danych jest w ażne nie tylko w bazach danych, lecz także w rozw iązyw aniu innych problem ów inform atycznych. W tym rozdziale poznasz elem e n tarn ą metodę. Sortow anie bąbelkow e jest skuteczne przy porządkow a
niu niew ielkich zbiorów, dlatego też stosuje się je rzadko. Stanowi jednak przy
kład klasycznego rozw iązania tego problem u.
27.1. Opis metody, czyli na czym polega sortowanie bąbelkowe
N apisz w zeszycie pięć różnych liczb z zakresu od 0 do 1 0 0 w przypadkow ej kolejności, np.:
10 15 1 98 33
V. ALGORYTMY I PROGRAMOWANIE
W program ie kom pu terow ym liczby te bę dą u m ie szczo n e w ta b lic y je d n o w ym iarow ej.
Bez problem u w ska że sz najw iększą liczbę w tym zbiorze. Spośród pozosta
łych także szybko odn ajdziesz najw iększą. A le kom puter nie działa tak jak nasz mózg. Potrzebny jest niezaw odny algorytm . Istnieje sporo różnych rozw iązań tego problem u. Nasze rozw ażania zaczniem y od m etody bąbelkow ej. Skąd taka nazwa? W yobraź sob ie w yso kie naczynie z w odą i w ędrujące ku górze bąbelki gazu. Który w ygra ten w yścig ? No i m asz gotową odpow iedź.
W róćm y do naszych liczb. Poniew aż kom puter nie potrafi objąć w zrokiem w szystkich i w yłu skać najw iększej tak jak ty, m usi zro bić to zgodnie z pewnym algorytm em w pewnej skończonej liczbie kroków. W ilu krokach? Po liczym y to w sp óln ie po zakończeniu sortow ania m etodą bąbelkow ą.
Założenie: po zakończeniu sortow ania liczby będą ułożone od najm niejszej z lewej strony do najw iększej z prawej.
K r o k i.
Porównanie 1.
W eźm y dw ie pierw sze liczby 10 i 15. 10<15, czyli dla tej pary kolejność jest zgodna z założeniem . Nie zm ieniam y jej.
Porównanie 2.
Kolejna para to 15 i 1. 1<15, a w ię c zgodnie z założeniem zam ieniam y je m iejscam i.
10 l S ' * ■►1 98 33 10 1 15 98 33
Porównanie 3.
Porównajm y n astępną parę 15<98. Nic się w ię c nie zm ieni.
Porównanie 4.
98>33, dlatego zam ieniam y je m iejscam i.
10 1 15 98-* ■►33 10 1 15 33 98
Teraz m ożna już pow iedzieć, że 98 jest najw iększą liczb ą w zbiorze. Zau w a
ży łeś/zau w ażyłaś zapew ne, że gdyby 98 znajdow ała się pierw otnie na pierw szej pozycji z lewej, w każdej parze byłaby liczbą w ię kszą i przesuw ałaby się w prawo (zam ieniała m iejsce w każdej parze).
27. SORTOWANIE BĄBELKOWE, CZ YL I K A Ż D A LIC ZB A J E S T M N I E J S Z A
Krok 2.
Porównanie 1.
W racam y do pierw szej pary z lewej strony. 10>1, a w ię c obie liczby zam ieniają się miejscam i.
1 10 15 33 98
Porównanie 2.
10<15, zatem nie zm ieniam y kolejności w tej parze.
Porównanie 3.
15<33, kolejność pozostaje bez zm ian. Nie ma sensu porów nyw ać 33 z 98, pon iew aż w iadom o, że 98 jest najw iększą liczb ą w zbiorze.
Uwaga! --- W idzisz już, że liczby zostały posortow ane. Niestety, kom puter realizujący algorytm o tym nie w ie i m usi przeprow adzić działania do końca.
Krok 3.
Porównanie 1.
1<10, nic się nie zm ienia.
Porównanie 2.
10<15, kolejność pozostaje bez zm ian. W iem y za to, że 33 jest już na sw oim m iejscu i nie porów nujem y jej z liczbą 15.
Krok 4.
Porównanie 1
.
1<10, nie zm ieniam y w ię c kolejności. 15 jest już na,sw oim m iejscu, dlatego m ożem y zakoń czyć działanie algorytm u.
O statecznie otrzym ujem y posortow any zbiór liczb.
1 10 15 33 98
Do posortow an ia 5 liczb potrzebow aliśm y czterech przejść algorytmu. W każ
dym kolejnym w ykonaliśm y o jedno porów nanie mniej. W praktyce, co sp raw dzisz, układając program, funkcja sortow ania będzie zaw sze w tej m etodzie urucham iana n-1 razy.
V. A L G O R Y T M Y ! P R O G R A M O W A N IE
sortowanie bąbelkowe
Zdefiniujm y tę metodę:
Sortowanie bąbelkowe polega na porównywaniu kolejno dw óch sąsiednich (występujących obok siebie w tablicy) liczb i zam ianie ich m iejscam i, jeśli okaże się, że porządek jest zaburzony, czyli liczba o niższym indeksie jest większa. O p e
racje zam iany w ykonujem y tak długo, aż zbiór zostanie posortowany.
27.2. Sortowanie bąbelkowe w praktyce, czyli układamy algorytm
Na podstawie definicji, opisu i dośw iadczenia na liczbach z poprzedniego podroz
działu m ożna ułożyć algorytm dla m etody sortow ania bąbelkow ego (rys. 27.1.).
START
wprowadź n-liczba sortowanychjiczb
I
wprowadź
Rys. 27.1. Przykładowy algorytm sortowania bąbelkowego W po w yższym a lg o rytm ie dane liczb y znajdują się w jednow ym iarow e j ta b licy T o rozm iarze n, równym liczb ie liczb podle gających sortow aniu.
W prow adzon o ta kże dw ie zm ien n e pom ocn icze. Za p o m o cą i in deksuje się e le m e n ty tablicy. Zm ie n n a z po zw a la p rze ch o w a ć liczb ę w pro ce sie zam ian y kolejn ości w danej parze.
27. S O RT O W ANIE BĄBELKOWE, CZ YL I K A Ż D A L IC Z B A JE S T M N IE J S Z A ...
Zw eryfikujm y popraw ność działania algorytm u (tab. 27.1.).
Lp. Warunki Sortowanie wartości zmiennych Stan tablicy T
1. Start n=5, wprowadzenie danych do T 3 10 2 1 4
2. n * l n=5, i= l
3. i<n T[1]<T[2], n=5, i=2 3 10 2 1 4
4. i<n T[2]>T[3] - zamiana n=5, i=3 3 2 10 1 4
5. i<n T[3]>T[4] - zamiana n=5, i=4 3 2 1 10 4
6. i<n T[4]>T[5] - zamiana n=5, i=5 3 2 1 4 10
7. i=n n=4, i=5
8. n * l n=4, i= l
9. i<n T[1]>T[2] - zamiana n=4, i=2 2 3 1 4 10
10. i<n T[2]>T[3] - zamiana n=4, i=3 2 1 3 4 10
11. i<n T[3]<T[4], n=4, i=4 2 1 3 4 10
12. i=n n=3, i=4
13. n * l n=3, i= l
14. i<n T[1]>T[2] - zamiana n=3, i=2 1 2 3 4 10
15. k n T[2]<T[3], n=3, i=3 1 2 3 4 10
16. i=n n=2, i=3
17. n * l n=2, i= l
18. i<n T[1]<T[2], n=2, i=2 1 2 3 4 10
19. i=n n=l, i=2
20. n= l 1 2 3 4 10
21. Stop
Tab. 27.1. W eryfikacja działania algorytmu dla przykładowych liczb
A lgorytm sp e łn ił sw oje zadanie i w przew idyw anej liczbie kroków posortow ał przykładow e liczby. Zauw aż, że gdy w ię ksza liczba z pary znajdow ała się po prawej stronie, ułożenie elem entów się nie zm ieniało. J e s t to efekt n ie sp e łn ie nia w arunku T[i]>T[i+l],
Ja k sortow ać litery? Przypom nij sobie, jak są one przechow yw ane w pam ięci komputera. Każdem u znakowi przyporządkow uje się liczbę - jego kod ASCII.
A skoro litery dla programu kom puterowego są liczbam i, to ich sortow anie prze
biega zgodnie z algorytm am i sortow ania liczb. Je śli przyjrzysz się uw ażnie tabeli kodów ASCII, z pew n ością dojdziesz do wniosku, że m ałe litery mają w iększe liczby w ASCII od dużych i zgodnie z tym zostaną posortow ane (tab. 27.2.). Kody pierw szych liter alfabetu są m niejsze od ostatnich, co pozw ala na ich układanie w edług alfabetu. Znakom typu przecinek, nawias itp. w ASCII odpow iadają liczby m niejsze od kodów liter.
Litery przed sortow aniem :
Litera A C c u F
ASCII 65 67 99 117 70
Po sortowaniu:
Litera C F a c u
ASCII 67 70 97 99 117
Tab. 27.2. Przykład sortowania liter zgodnie z kodami ASCII
ZADANIA DO ROZWIĄZANIA
1. Sprawdź działanie algorytm u sortow ania bąbelkowego dla danych, w których w ielokrotnie w ystę
pują te same liczby. W ykonaj symulacje w tabeli podobnej do tabeli 27.1. Przedstaw krótko, jak się zachowuje algorytm dla par identycznych liczb.
2. Policz, a następnie zweryfikuj doświadczalnie, ile razy zostanie wykonane porów nyw anie par dla n=12 w algorytmie sortow ania bąbelkowego. W yniki pośrednie zapisuj w postaci dwunastoele- mentowych tablic.
3. Zapisz algorytm sortow ania bąbelkowego w postaci pseudokodu.
4. Ułóż algorytm sortujący litery zapisane w tablicy jednowymiarowej. Zweryfikuj działanie tego program u. Czym różni się program sortujący liczby od program u sortującego litery?
5*. Ułóż algorytm układający według alfabetu n im ion. Opisz jego działanie w dokum encie teksto
wym.
PODSUMOWANIE LEKCJI
s. 190 • S o rto w a n ie b ą b e lk o w e polega na porów nyw aniu kolejno dw óch sąsiednich (występujących obok siebie w tablicy) liczb i zam ianie ich miejscami, jeśli okaże się, że porządek został zaburzony, czyli liczba o niższym indeksie jest większa,
s. 190 • A lg o ry tm so r to w a n ia b ą b e lk o w e g o pow tarzany jest n-1 razy, gdzie n jest liczbą sortow anych elem entów.
s. 190 • Podczas so r to w a n ia b ą b e lk o w e g o n a jw ięk sza liczb a jest przesuw ana na ostatnią pozycję, k tó rej nie zajmuje już większa od niej.
s. 191 • L itery są sortow ane w edług odpowiadających im liczb - k o d ó w ASCII.