Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Bubble Sort
2
Sorting - Ordinamento Sorting takes an unordered collection and makes it an ordered one. 77 42 35 12 101 5 5 12 35 42 77 101
3
"Bubbling Up" the Largest Element
Traverse a collection of elements Move from the front to the end “Bubble” the largest value to the end using pair-wise comparisons and swapping (Scorrere l’elenco) (dal primo all’ultimo) (spingendo l’elemento più pesante verso il fondo usando confronti e scambi fra coppie ) 77 42 35 12 101 5
4
"Bubbling Up" the Largest Element
Scorriamo l’elenco a partire dal primo fino all’ultimo Confrontiamo: ciascun elemento con il suo successore Se il successivo è minore => scambio! Swap 42 77 77 42 35 12 101 5
5
"Bubbling Up" the Largest Element
Scorriamo l’elenco a partire dal primo fino all’ultimo Confrontiamo: ciascun elemento con il suo successore Se il successivo è minore => scambio! Swap 35 77 42 77 35 12 101 5
6
"Bubbling Up" the Largest Element
Scorriamo l’elenco a partire dal primo fino all’ultimo Confrontiamo: ciascun elemento con il suo successore Se il successivo è minore => scambio! Swap 12 77 42 35 77 12 101 5
7
"Bubbling Up" the Largest Element
Scorriamo l’elenco a partire dal primo fino all’ultimo Confrontiamo: ciascun elemento con il suo successore Se il successivo è minore => scambio! 42 35 12 77 101 5 No need to swap
8
"Bubbling Up" the Largest Element
Scorriamo l’elenco a partire dal primo fino all’ultimo Confrontiamo: ciascun elemento con il suo successore Se il successivo è minore => scambio! Swap 5 101 42 35 12 77 101 5
9
"Bubbling Up" the Largest Element
Scorriamo l’elenco a partire dal primo fino all’ultimo Confrontiamo: ciascun elemento con il suo successore Se il successivo è minore => scambio! 101 42 35 12 77 5 Largest value correctly placed
10
Items of Interest Soltanto il valore maggiore è al posto giusto
Tutti gli altri sono fuori posto E’ necessario ripetere il processo 101 42 35 12 77 5 Largest value correctly placed
11
Repeat “Bubble Up” How Many Times?
Se abbiamo N elementi… E ad ogni iterazione posizioniamo correttamente un elemento… Allora ripetiamo il processo di “bubble up” process N – 1 volte.
12
“Bubbling” All the Elements
77 12 35 42 5 101 N - 1 5 42 12 35 77 101 42 5 35 12 77 101 42 35 5 12 77 101 42 35 12 5 77 101
13
Reducing the Number of Comparisons
12 35 42 77 101 5 77 12 35 42 5 101 5 42 12 35 77 101 42 5 35 12 77 101 42 35 5 12 77 101
14
Reducing the Number of Comparisons
Alla J-esima iterazione di “bubble up”, è necessario fare soltanto N-J confronti. Ad esempio: Alla quarta iterazione (J=4) N è 6 Dobbiamo fare soltanto 2 confronti 42 5 35 12 77 101
15
Already Sorted Collections?
Che succede se la sequenza è già ordinata? Che cosa succede se soltanto alcune coppie sono fuori posto e dopo qualche giro l’elenco è già ordinato? Vogliamo accorgerci che la sequenza è già ordinata e fermarci! 42 35 12 5 77 101
16
Using a Boolean “Flag” Una variabile booleana (Flag):
durante un’iterazione di “bubble up” abbiamo fatto uno scambio (oppure no) Se non ci sono stati scambi: La sequenza è già ordinata! La variabile “Flag” va re-impostata ad ogni nuova iterazione!
17
An Animated Example N 8 did_swap true to_do 7 index 98 23 45 14 6 67
33 42
18
An Animated Example N 8 did_swap false to_do 7 index 1 98 23 45 14 6
67 33 42
19
An Animated Example N 8 did_swap false to_do 7 index 1 Swap 98 23 45
14 6 67 33 42
20
An Animated Example N 8 did_swap true to_do 7 index 1 Swap 23 98 45 14
6 67 33 42
21
An Animated Example N 8 did_swap true to_do 7 index 2 23 98 45 14 6 67
33 42
22
An Animated Example N 8 did_swap true to_do 7 index 2 Swap 23 98 45 14
6 67 33 42
23
An Animated Example N 8 did_swap true to_do 7 index 2 Swap 23 45 98 14
6 67 33 42
24
An Animated Example N 8 did_swap true to_do 7 index 3 23 45 98 14 6 67
33 42
25
An Animated Example N 8 did_swap true to_do 7 index 3 Swap 23 45 98 14
6 67 33 42
26
An Animated Example N 8 did_swap true to_do 7 index 3 Swap 23 45 14 98
6 67 33 42
27
An Animated Example N 8 did_swap true to_do 7 index 4 23 45 14 98 6 67
33 42
28
An Animated Example N 8 did_swap true to_do 7 index 4 Swap 23 45 14 98
6 67 33 42
29
An Animated Example N 8 did_swap true to_do 7 index 4 Swap 23 45 14 6
98 67 33 42
30
An Animated Example N 8 did_swap true to_do 7 index 5 23 45 14 6 98 67
33 42
31
An Animated Example N 8 did_swap true to_do 7 index 5 Swap 23 45 14 6
98 67 33 42
32
An Animated Example N 8 did_swap true to_do 7 index 5 Swap 23 45 14 6
67 98 33 42
33
An Animated Example N 8 did_swap true to_do 7 index 6 23 45 14 6 67 98
33 42
34
An Animated Example N 8 did_swap true to_do 7 index 6 Swap 23 45 14 6
67 98 33 42
35
An Animated Example N 8 did_swap true to_do 7 index 6 Swap 23 45 14 6
67 33 98 42
36
An Animated Example N 8 did_swap true to_do 7 index 7 23 45 14 6 67 33
98 42
37
An Animated Example N 8 did_swap true to_do 7 index 7 Swap 23 45 14 6
67 33 98 42
38
An Animated Example N 8 did_swap true to_do 7 index 7 Swap 23 45 14 6
67 33 42 98
39
After First Pass of Outer Loop
N 8 did_swap true to_do 7 Finished first “Bubble Up” index 8 23 45 14 6 67 33 42 98
40
The Second “Bubble Up” N 8 did_swap false to_do 6 index 1 23 45 14 6
67 33 42 98
41
The Second “Bubble Up” N 8 did_swap false to_do 6 index 1 No Swap 23
45 14 6 67 33 42 98
42
The Second “Bubble Up” N 8 did_swap false to_do 6 index 2 23 45 14 6
67 33 42 98
43
The Second “Bubble Up” N 8 did_swap false to_do 6 index 2 Swap 23 45
14 6 67 33 42 98
44
The Second “Bubble Up” N 8 did_swap true to_do 6 index 2 Swap 23 14 45
67 33 42 98
45
The Second “Bubble Up” N 8 did_swap true to_do 6 index 3 23 14 45 6 67
33 42 98
46
The Second “Bubble Up” N 8 did_swap true to_do 6 index 3 Swap 23 14 45
67 33 42 98
47
The Second “Bubble Up” N 8 did_swap true to_do 6 index 3 Swap 23 14 6
45 67 33 42 98
48
The Second “Bubble Up” N 8 did_swap true to_do 6 index 4 23 14 6 45 67
33 42 98
49
The Second “Bubble Up” N 8 did_swap true to_do 6 index 4 No Swap 23 14
45 67 33 42 98
50
The Second “Bubble Up” N 8 did_swap true to_do 6 index 5 23 14 6 45 67
33 42 98
51
The Second “Bubble Up” N 8 did_swap true to_do 6 index 5 Swap 23 14 6
45 67 33 42 98
52
The Second “Bubble Up” N 8 did_swap true to_do 6 index 5 Swap 23 14 6
45 33 67 42 98
53
The Second “Bubble Up” N 8 did_swap true to_do 6 index 6 23 14 6 45 33
67 42 98
54
The Second “Bubble Up” N 8 did_swap true to_do 6 index 6 Swap 23 14 6
45 33 67 42 98
55
The Second “Bubble Up” N 8 did_swap true to_do 6 index 6 Swap 23 14 6
45 33 42 67 98
56
After Second Pass of Outer Loop
8 did_swap true to_do 6 Finished second “Bubble Up” index 7 23 14 6 45 33 42 67 98
57
The Third “Bubble Up” N 8 did_swap false to_do 5 index 1 23 14 6 45 33
42 67 98
58
The Third “Bubble Up” N 8 did_swap false to_do 5 index 1 Swap 23 14 6
45 33 42 67 98
59
The Third “Bubble Up” N 8 did_swap true to_do 5 index 1 Swap 14 23 6
45 33 42 67 98
60
The Third “Bubble Up” N 8 did_swap true to_do 5 index 2 14 23 6 45 33
42 67 98
61
The Third “Bubble Up” N 8 did_swap true to_do 5 index 2 Swap 14 23 6
45 33 42 67 98
62
The Third “Bubble Up” N 8 did_swap true to_do 5 index 2 Swap 14 6 23
45 33 42 67 98
63
The Third “Bubble Up” N 8 did_swap true to_do 5 index 3 14 6 23 45 33
42 67 98
64
The Third “Bubble Up” N 8 did_swap true to_do 5 index 3 No Swap 14 6
23 45 33 42 67 98
65
The Third “Bubble Up” N 8 did_swap true to_do 5 index 4 14 6 23 45 33
42 67 98
66
The Third “Bubble Up” N 8 did_swap true to_do 5 index 4 Swap 14 6 23
45 33 42 67 98
67
The Third “Bubble Up” N 8 did_swap true to_do 5 index 4 Swap 14 6 23
33 45 42 67 98
68
The Third “Bubble Up” N 8 did_swap true to_do 5 index 5 14 6 23 33 45
42 67 98
69
The Third “Bubble Up” N 8 did_swap true to_do 5 index 5 Swap 14 6 23
33 45 42 67 98
70
The Third “Bubble Up” N 8 did_swap true to_do 5 index 5 Swap 14 6 23
33 42 45 67 98
71
After Third Pass of Outer Loop
N 8 did_swap true to_do 5 Finished third “Bubble Up” index 6 14 6 23 33 42 45 67 98
72
The Fourth “Bubble Up” N 8 did_swap false to_do 4 index 1 14 6 23 33
42 45 67 98
73
The Fourth “Bubble Up” N 8 did_swap false to_do 4 index 1 Swap 14 6 23
33 42 45 67 98
74
The Fourth “Bubble Up” N 8 did_swap true to_do 4 index 1 Swap 6 14 23
33 42 45 67 98
75
The Fourth “Bubble Up” N 8 did_swap true to_do 4 index 2 6 14 23 33 42
45 67 98
76
The Fourth “Bubble Up” N 8 did_swap true to_do 4 index 2 No Swap 6 14
23 33 42 45 67 98
77
The Fourth “Bubble Up” N 8 did_swap true to_do 4 index 3 6 14 23 33 42
45 67 98
78
The Fourth “Bubble Up” N 8 did_swap true to_do 4 index 3 No Swap 6 14
23 33 42 45 67 98
79
The Fourth “Bubble Up” N 8 did_swap true to_do 4 index 4 6 14 23 33 42
45 67 98
80
The Fourth “Bubble Up” N 8 did_swap true to_do 4 index 4 No Swap 6 14
23 33 42 45 67 98
81
After Fourth Pass of Outer Loop
N 8 did_swap true to_do 4 Finished fourth “Bubble Up” index 5 6 14 23 33 42 45 67 98
82
The Fifth “Bubble Up” N 8 did_swap false to_do 3 index 1 6 14 23 33 42
45 67 98
83
The Fifth “Bubble Up” N 8 did_swap false to_do 3 index 1 No Swap 6 14
23 33 42 45 67 98
84
The Fifth “Bubble Up” N 8 did_swap false to_do 3 index 2 6 14 23 33 42
45 67 98
85
The Fifth “Bubble Up” N 8 did_swap false to_do 3 index 2 No Swap 6 14
23 33 42 45 67 98
86
The Fifth “Bubble Up” N 8 did_swap false to_do 3 index 3 6 14 23 33 42
45 67 98
87
The Fifth “Bubble Up” N 8 did_swap false to_do 3 index 3 No Swap 6 14
23 33 42 45 67 98
88
After Fifth Pass of Outer Loop
N 8 did_swap false to_do 3 Finished fifth “Bubble Up” index 4 6 14 23 33 42 45 67 98
89
Finished “Early” N 8 did_swap false to_do 3
We didn’t do any swapping, so all of the other elements must be correctly placed. We can “skip” the last two passes of the outer loop. index 4 6 14 23 33 42 45 67 98
90
Summary “Bubble Up” algorithm will move largest value to its correct location (to the right) Repeat “Bubble Up” until all elements are correctly placed: Maximum of N-1 times Can finish early if no swapping occurs We reduce the number of elements we compare each time one is correctly placed
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.