• Nie Znaleziono Wyników

27. Sortowanie bąbelkowe, czyli każda liczba jest mniejsza od maksymalnej lub jej równa

N/A
N/A
Protected

Academic year: 2022

Share "27. Sortowanie bąbelkowe, czyli każda liczba jest mniejsza od maksymalnej lub jej równa"

Copied!
6
0
0

Pełen tekst

(1)

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

(2)

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).

(3)

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.

(4)

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.

(5)

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.

(6)

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.

192

Cytaty

Powiązane dokumenty

Dla podanych a, b, c podać takie d, aby istniał czworokąt wy- pukły o bokach długości (z zachowaniem kolejności) a, b, c, d, w który można wpisać okrąg.. Dla podanych a, b,

23. Dana jest liczba rzeczywista a. Niech P będzie dowolnym punktem wewnątrz czworokąta wypukłego ABCD. Udowod- nij, że środki ciężkości trójkątów 4P AB, 4P BC, 4P CD, 4P

Najpopularniejszym do tego formatem były pliki z rozszerzeniem *.ini (tekstowe, ASCII). Ponieważ nie wszyscy programiści trzymali się tych samych zasad, jeśli chodzi o lokalizację

Takim sposobem tw orzyło się społeczeństw o hybrydowate, w którym nowe, z reguły naśladow cze instytucje i procedury gospodarcze oraz polityczne są ako- m odow ane

Dla dodatniej liczby naturalnej n znaleźć wzór na największą potęgę liczby pierwszej p dzielącą n!4. Rozłożyć na czynniki pierwsze

Pierwsza z nich jest dwa razy większa od drugiej, a druga trzy razy mniejsza od trzeciej.. Znajdź

Jakie jest prawdopodobieństwo, że sześcian losowo wybranej liczby spośród liczb od 0 do 999 kończy się na 11.. Oblicz prawdopodobieństwo tego, że pierwsza z wylosowanych liczb

Sformułuj poniższe zdania z ukrytymi kwantyfika- torami w podanej postaci symbolicznej i określ ich prawdziwość.. (a) Sześcian liczby nieparzystej jest liczbą