T[idx]<->T[idx+1] Bubble sort START Stan początkowy Len=9 T: 2 3 5 1 8 9 6 7 4 idx=1 T[idx]<->T[idx+1] T[idx]>T[idx+1] T F Idx++ Len-- Idx>=Len Len<=1 F STOP T F T
T[idx]<->T[idx+1] Bubble sort START START Len=9 T: 2 3 5 1 8 9 6 7 4 idx=1 T[idx]<->T[idx+1] T[idx]>T[idx+1] T F Idx++ Len-- Idx>=Len Len<=1 F STOP F T T
T[idx]<->T[idx+1] Bubble sort START Przygotowanie do pracy – zakładamy, że cała tablica jest nieposortowana Len=9 T: 2 3 5 1 8 9 6 7 4 idx=1 T[idx]<->T[idx+1] T[idx]>T[idx+1] T F Len=9 Idx++ Len-- Idx>=Len F T Len<=1 F STOP T
T[idx]<->T[idx+1] Bubble sort START Zaczynając od pierwszego elementu: Len=9 T: 2 3 5 1 8 9 6 7 4 idx=1 idx=1 T[idx]<->T[idx+1] T[idx]>T[idx+1] T F Len=9 Idx++ Len-- Idx>=Len Len<=1 F STOP F T T
T[idx]<->T[idx+1] Bubble sort Porównujemy w parach. Teza warunku: „Wyższy element większy od niższego” START Len=9 T: 2 3 5 1 8 9 6 7 4 idx=1 idx=1 T[idx]<->T[idx+1] T[idx]>T[idx+1] T F Len=9 Idx++ Len-- Idx>=Len Len<=1 F STOP F T T
T[idx]<->T[idx+1] Bubble sort START Fałsz – para jest wstępnie uporządkowana Len=9 T: 2 3 5 1 8 9 6 7 4 idx=1 idx=1 T[idx]<->T[idx+1] T[idx]>T[idx+1] T F Len=9 Idx++ Len-- Idx>=Len Len<=1 F STOP F T T
T[idx]<->T[idx+1] Bubble sort START Fałsz- omija procedurę wymiany Len=9 T: 2 3 5 1 8 9 6 7 4 idx=1 idx=1 T[idx]<->T[idx+1] T[idx]>T[idx+1] T F Len=9 Idx++ Len-- Idx>=Len Len<=1 F STOP F T T
T[idx]<->T[idx+1] Bubble sort START Przejdź do następnych elementów Len=9 T: 2 3 5 1 8 9 6 7 4 idx=2 idx=1 T[idx]<->T[idx+1] T[idx]>T[idx+1] T F Len=9 Idx++ Len-- Idx>=Len Iidx =2 Len<=1 F STOP F T T
T[idx]<->T[idx+1] Bubble sort START Teza:”Osiągnął koniec” Len=9 T: 2 3 5 1 8 9 6 7 4 idx=2 idx=1 T[idx]<->T[idx+1] T[idx]>T[idx+1] T F Len=9 Idx++ Len-- Idx>=Len Len<=1 F STOP F T T idx=2 Len=9
T[idx]<->T[idx+1] Bubble sort Fałsz-to jeszcze nie koniec nieposortowanej części – pętla działa dalej START Len=9 T: 2 3 5 1 8 9 6 7 4 idx=2 idx=1 T[idx]<->T[idx+1] T[idx]>T[idx+1] T F Len=9 Idx++ Len-- Idx>=Len Len<=1 F STOP F T T idx=2 Len=9
T[idx]<->T[idx+1] Bubble sort START Teza:”Wyższy element większy od niższego” Len=9 T: 2 3 5 1 8 9 6 7 4 idx=2 idx=1 T[idx]<->T[idx+1] T[idx]>T[idx+1] T F Len=9 Idx++ Len-- Idx>=Len Len<=1 F STOP F T T idx=2 Len=9
T[idx]<->T[idx+1] Bubble sort START Fałsz – elementy są w dobrym porządku- sterowanie przechodzi dalej Len=9 T: 2 3 5 1 8 9 6 7 4 idx=2 idx=1 T[idx]<->T[idx+1] T[idx]>T[idx+1] T F Len=9 Idx++ Len-- Idx>=Len Len<=1 F STOP F T T
T[idx]<->T[idx+1] Bubble sort START Przejdź do następnych elementów T: 2 3 5 1 8 9 6 7 4 Len=9 idx=1 idx=3 T[idx]<->T[idx+1] T[idx]>T[idx+1] T F Len=9 Idx++ Len-- Idx>=Len iIdx =3 Len<=1 F STOP F T T
T[idx]<->T[idx+1] Bubble sort START Teza:”Osiągnął koniec” Len=9 T: 2 3 5 1 8 9 6 7 4 idx=1 idx=3 T[idx]<->T[idx+1] T[idx]>T[idx+1] T F Len=9 Idx++ Len-- Idx>=Len Len<=1 F STOP F T T idx=3 Len=9
T[idx]<->T[idx+1] Bubble sort START Fałsz – pętla działa dalej Len=9 T: 2 3 5 1 8 9 6 7 4 idx=1 idx=3 T[idx]<->T[idx+1] T[idx]>T[idx+1] T F Len=9 Idx++ Len-- Idx>=Len Len<=1 F STOP F T T idx=3 Len=9
T[idx]<->T[idx+1] Bubble sort START Teza:”Wyższy element większy od niższego” Len=9 T: 2 3 5 1 8 9 6 7 4 idx=1 idx=3 T[idx]<->T[idx+1] T[idx]>T[idx+1] T F Len=9 Idx++ Len-- Idx>=Len Len<=1 F STOP F T T idx=3 Len=9
T[idx]<->T[idx+1] Bubble sort START Prawda – będzie przestawienie Len=9 T: 2 3 5 1 8 9 6 7 4 idx=1 idx=3 T[idx]<->T[idx+1] T[idx]>T[idx+1] T F Len=9 Idx++ Len-- Idx>=Len Len<=1 F STOP F T T idx=3 Len=9
T[idx]<->T[idx+1] Bubble sort START Przestawienie Len=9 T: 2 3 5 1 8 9 6 7 4 idx=1 idx=3 1 5 T[idx]<->T[idx+1] T[idx]>T[idx+1] T F Len=9 Idx++ Len-- Idx>=Len Len<=1 F STOP F T T idx=3 Len=9
T[idx]<->T[idx+1] Bubble sort START Kolejna para do analizy Len=9 T: 2 3 8 9 6 7 4 idx=1 1 5 idx=4 T[idx]<->T[idx+1] T[idx]>T[idx+1] T F Idx++ Len-- Len=9 Idx>=Len Len<=1 F STOP F T T idx=4 Len=9
T[idx]<->T[idx+1] Bubble sort START Jeszcze jest kilka elementów do przeglądnięcia Len=9 T: 2 3 8 9 6 7 4 idx=1 1 5 idx=4 T[idx]<->T[idx+1] T[idx]>T[idx+1] T F Idx++ Len-- Len=9 Idx>=Len Len<=1 F STOP F T T idx=4 Len=9
T[idx]<->T[idx+1] Bubble sort START Warunek jest fałszywy – jeszcze nie doszedł do końca części nieuporządkowanej. Pętla trwa dalej. Len=9 T: 2 3 8 9 6 7 4 idx=1 1 5 idx=4 T[idx]<->T[idx+1] T[idx]>T[idx+1] T F Idx++ Len-- Len=9 Idx>=Len Len<=1 F STOP F T T idx=4 Len=9
T[idx]<->T[idx+1] Bubble sort START Następuje kolejne sprawdzenie porządku w parze dwuelementowej. Para jest wstępnie uporzadkowana. Nie nastąpi przestawienie. Len=9 T: 2 3 8 9 6 7 4 idx=1 1 5 idx=4 T[idx]<->T[idx+1] T[idx]>T[idx+1] T F Idx++ Len-- Len=9 Idx>=Len Len<=1 F STOP F T T idx=4 Len=9
T[idx]<->T[idx+1] Bubble sort START Następna para. Len=9 T: 2 3 8 9 6 7 4 idx=1 1 5 T[idx]<->T[idx+1] idx=5 T[idx]>T[idx+1] T F Idx++ Len-- Len=9 Idx>=Len Len<=1 F STOP F T T idx=5 Len=9
T[idx]<->T[idx+1] Bubble sort START Teza: „Doszedł do końca” - jest fałszywa. Zabawa trwa dalej. Len=9 T: 2 3 8 9 6 7 4 idx=1 1 5 T[idx]<->T[idx+1] idx=5 T[idx]>T[idx+1] T F Idx++ Len-- Len=9 Idx>=Len Len<=1 F STOP F T T idx=5 Len=9
T[idx]<->T[idx+1] Bubble sort START Para jest uporządkowana – nie będzie przestawienia. Len=9 T: 2 3 8 9 6 7 4 idx=1 1 5 T[idx]<->T[idx+1] idx=5 T[idx]>T[idx+1] T F Idx++ Len-- Len=9 Idx>=Len Len<=1 F STOP F T T idx=5 Len=9
T[idx]<->T[idx+1] Bubble sort START Teraz opracowywana będzie para(T[6] i T[7]) Len=9 T: 2 3 8 9 6 7 4 idx=1 1 5 T[idx]<->T[idx+1] T[idx]>T[idx+1] idx=6 T F Idx++ Len-- Len=9 Idx>=Len Len<=1 F STOP F T T idx=6 Len=9
T[idx]<->T[idx+1] Bubble sort START Para znajduje się w części nieopracowanej – będzie analizowana. Len=9 T: 2 3 8 9 6 7 4 idx=1 1 5 T[idx]<->T[idx+1] T[idx]>T[idx+1] idx=6 T F Idx++ Len-- Len=9 Idx>=Len Len<=1 F STOP F T T idx=6 Len=9
T[idx]<->T[idx+1] Bubble sort START Większy element jest przed mniejszym – nastąpi przestawienie. Len=9 T: 2 3 8 9 6 7 4 idx=1 1 5 T[idx]<->T[idx+1] T[idx]>T[idx+1] idx=6 T F Idx++ Len-- Len=9 Idx>=Len Len<=1 F STOP T F T idx=6 Len=9
T[idx]<->T[idx+1] Bubble sort START Przestawienie. „Cięższy” element „spadł niżej”, a ”lżejszy” „poszedł w górę”. Len=9 T: 2 3 8 9 6 7 4 idx=1 1 5 T[idx]<->T[idx+1] T[idx]>T[idx+1] idx=6 6 9 T F Idx++ Len-- Len=9 Idx>=Len Len<=1 F STOP T F T idx=6 Len=9
T[idx]<->T[idx+1] Bubble sort START I kolejne dwa elementy – jeszcze w części nieposortowanej. Pętla wykona kolejny obrót. Len=9 T: 2 3 8 7 4 idx=1 1 5 T[idx]<->T[idx+1] T[idx]>T[idx+1] 6 9 T idx=7 F Idx++ Len-- Len=9 Idx>=Len Len<=1 F STOP T F T idx=7 Len=9
T[idx]<->T[idx+1] Bubble sort START Będzie przestawienie. Len=9 T: 2 3 8 7 4 idx=1 1 5 T[idx]<->T[idx+1] T[idx]>T[idx+1] 6 9 T idx=7 F Idx++ Len-- Len=9 Idx>=Len Len<=1 F STOP T F T idx=7 Len=9
T[idx]<->T[idx+1] Bubble sort START Przestawienie Len=9 T: 2 3 8 7 4 idx=1 1 5 T[idx]<->T[idx+1] T[idx]>T[idx+1] 6 9 T idx=7 7 9 F Idx++ Len-- Len=9 Idx>=Len Len<=1 F STOP T F T idx=7 Len=9
T[idx]<->T[idx+1] Bubble sort START Jeszcze jedna para będzie sprawdzana - nie osiągnięto końca obszaru sortowanego. Wykonany zostanie kolejny obrót petli. Len=9 T: 2 3 8 4 idx=1 1 5 T[idx]<->T[idx+1] T[idx]>T[idx+1] 6 7 9 T idx=8 F Idx++ Len-- Len=9 Idx>=Len Len<=1 F STOP T F T idx=8 Len=9
T[idx]<->T[idx+1] Bubble sort START Znów przestawienie: Bo T[idx] jest większe od T[idx+1] Len=9 T: 2 3 8 4 idx=1 1 5 T[idx]<->T[idx+1] T[idx]>T[idx+1] 6 7 9 T idx=8 F Idx++ Len-- Len=9 Idx>=Len Len<=1 F STOP T F T idx=8 Len=9
T[idx]<->T[idx+1] Bubble sort START Przestawienie. „9” dotarło na “dno”. Len=9 T: 2 3 8 4 idx=1 1 5 T[idx]<->T[idx+1] T[idx]>T[idx+1] 6 7 9 T idx=8 4 9 F Idx++ Len-- Len=8 Idx>=Len Len<=1 F STOP T F T idx=8 Len=9
T[idx]<->T[idx+1] Bubble sort START Obszar przestawiania dotarł do końca części sortowanej – pętla jest przerywana. Len=9 T: 2 3 8 9 idx=1 1 5 T[idx]<->T[idx+1] T[idx]>T[idx+1] 6 7 4 T F idx=9 Idx++ Len-- Len=9 Idx>=Len Len<=1 F STOP F T T idx=9 Len=9
T[idx]<->T[idx+1] Bubble sort START „9” jest już na właściwym miejscu. Część sortowana może być skrócona o jedną liczbę. Len=9 T: 2 3 1 5 8 6 7 4 9 idx=1 T[idx]<->T[idx+1] T[idx]>T[idx+1] T Len=8 F idx=9 Idx++ Len-- Idx>=Len Len<=1 F STOP F T T idx=9 Len=8
T[idx]<->T[idx+1] Bubble sort START To jeszcze nie koniec – jest co sortować. Len=9 T: 2 3 1 5 8 6 7 4 9 idx=1 T[idx]<->T[idx+1] T[idx]>T[idx+1] T Len=9 F idx=9 Idx++ Len-- Idx>=Len Len<=1 F STOP F T T idx=9 Len=8
T[idx]<->T[idx+1] Bubble sort START Dla całej nieposortowanej części cała praca zaczyna się od nowa.. Len=9 T: 2 3 1 5 8 6 7 4 9 idx=1 idx=1 T[idx]<->T[idx+1] T[idx]>T[idx+1] T Len=8 F Idx++ Len-- Idx>=Len Len<=1 F STOP F T T idx=1 Len=8
T[idx]<->T[idx+1] Bubble sort START Znowu, w zależności od ustawienia, kolejne liczby są przestawiane... i tak dla wszystkich par w części nieposortowanej. Len=9 T: 2 3 1 5 8 6 7 4 9 idx=1 idx=1 T[idx]<->T[idx+1] T[idx]>T[idx+1] T Len=8 F Idx++ Len-- Idx>=Len Len<=1 F STOP F T T idx=1 Len=8
T[idx]<->T[idx+1] Bubble sort START Ta część zostanie przedstawiona w skrócie. Zaznaczone zostaną tylko przestawienia. Przed cyklem: Przed cyklem: Len=9 Po cyklu: T: 2 3 1 5 8 6 7 4 9 T: 2 3 1 5 6 7 4 8 9 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=2 idx=2 idx=1 idx=2 idx=1 idx=2 idx=1 idx=1 idx=2 idx=2 idx=1 idx=1 idx=1 idx=3 idx=3 idx=1 idx=1 idx=3 idx=3 idx=1 idx=3 idx=3 idx=1 idx=1 idx=4 idx=1 idx=1 idx=1 idx=1 idx=4 idx=4 idx=4 idx=4 idx=1 idx=4 idx=1 T[idx]<->T[idx+1] idx=5 idx=1 idx=5 idx=1 idx=1 idx=5 idx=5 idx=1 idx=1 idx=1 idx=5 idx=5 T[idx]>T[idx+1] idx=1 idx=6 idx=6 idx=1 idx=1 idx=1 idx=6 idx=6 idx=6 idx=6 idx=1 idx=1 T idx=1 idx=1 idx=7 idx=1 idx=7 idx=1 idx=1 idx=7 idx=1 idx=1 idx=1 idx=7 idx=1 idx=1 idx=7 idx=1 idx=7 idx=1 idx=8 idx=8 idx=8 idx=8 Len=8 Len=8 Len=8 Len=8 idx=8 idx=8 Len=8 Len=8 F Idx++ Len-- Idx>=Len Len<=1 F STOP F T T idx=1 Len=8
T[idx]<->T[idx+1] Bubble sort START Po pełnym cyklu, “8” jest na właściwym miejscu. Część do sortowania jest znowu skracana. Przed cyklem: Przed cyklem: Len=9 T: 2 3 1 5 6 7 4 8 9 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=2 idx=2 idx=1 idx=2 idx=1 idx=1 idx=2 idx=1 idx=3 idx=1 idx=1 idx=3 idx=3 idx=1 idx=1 idx=3 idx=1 idx=4 idx=1 idx=4 idx=1 idx=4 idx=4 idx=1 T[idx]<->T[idx+1] idx=5 idx=1 idx=1 idx=5 idx=5 idx=5 idx=1 idx=1 T[idx]>T[idx+1] idx=1 idx=6 idx=1 idx=1 idx=1 idx=6 idx=6 idx=6 T idx=7 idx=1 idx=1 idx=1 idx=7 idx=1 idx=1 idx=1 idx=1 idx=7 idx=1 idx=7 idx=8 idx=8 idx=8 idx=8 Len=8 Len=8 Len=8 Len=8 F Idx++ Len-- Idx>=Len Len<=1 F STOP F T T idx=1 Len=8
T[idx]<->T[idx+1] Bubble sort START Na razie ma długość większą niż 1. Przed cyklem: Przed cyklem: Len=9 T: 2 3 1 5 6 7 4 8 9 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 T[idx]<->T[idx+1] T[idx]>T[idx+1] T Len=7 Len=8 Len=8 Len=8 F Idx++ Len-- Idx>=Len Len<=1 F STOP F T T idx=1 Len=8
T[idx]<->T[idx+1] Bubble sort START Zewnętrzna pętla jest powtarzana, aż długość części posortowanej zmaleje do 1 elementu. Po cyklu: Przed cyklem: Przed cyklem: Przed cyklem: Przed cyklem: Len=9 T: 2 3 1 5 6 7 4 8 9 T: 2 1 3 5 6 4 7 8 9 T: 1 2 3 5 4 6 7 8 9 T: 1 2 3 5 4 6 7 8 9 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx= idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 idx=1 Od tego momentu algorytm pracuje na darmo. Wykona jeszcze 4 przebiegi, w których nic sie nie zmieni. Len=5 T[idx]<->T[idx+1] T[idx]>T[idx+1] Len=6 T Len=7 Len=8 F Idx++ Len-- Idx>=Len Len<=1 F STOP F T T idx=1 Len=8
T[idx]<->T[idx+1] Bubble sort START Kiedy część do posortowania ma 1 element – cały algorytm kończy się Len=9 T: 1 2 3 5 4 6 7 8 9 Len=1 idx=1 T[idx]<->T[idx+1] T[idx]>T[idx+1] T F Idx++ Len-- Idx>=Len Len<=1 F STOP F T T idx=1 Len=8
T[idx]<->T[idx+1] Bubble sort START I to by było na tyle... Len=9 T: 1 2 3 5 4 6 7 8 9 Len=1 idx=1 Cała tablica jest posortowana T[idx]<->T[idx+1] T[idx]>T[idx+1] T F Idx++ Len-- Idx>=Len Len<=1 F STOP F T T idx=1 Len=8