1 / 46

Bubble sort

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

jin
Download Presentation

Bubble sort

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 STOP F T F T

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

More Related