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