Con 6 confronti/scambi
Prova con i numeri
1 2 3 4 5 6 7 8 9 10 11 |
+-----+-----+-----+-----+ | x1 | x2 | x3 | x4 | +-----+-----+-----+-----+------------+ | 100 | 10 | -8 | -25 | (x1 > x2)? | 100 sale di posizione | 10 | 100 | -8 | -25 | (x2 > x3)? | ... | 10 | -8 | 100 | -25 | (x3 > x4)? | ... | 10 | -8 | -25 | 100 | (x1 > x2)? | 100 ha raggiunto la posizione definitiva | -8 | 10 | -25 | 100 | (x2 > x3)? | 10 sale di posizione | -8 | -25 | 10 | 100 | (x1 > x2)? | 10 ha raggiunto la posizione definitiva | -25 | -8 | 10 | 100 | | -8 ha raggiunto la posizione definitiva +-----+-----+-----+-----+------------+ In 1° posizione rimane il valore minimo! |
L’algoritmo applicato si chiama Bubble Sort.
Codifica
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
If x1 > x2 Then Begin temp:=x1 ; x1 :=x2 ; x2 :=temp; End; If x2 > x3 Then Begin temp:=x2 ; x2 :=x3 ; x3 :=temp; End; If x3 > x4 Then Begin temp:=x3 ; x3 :=x4 ; x4 :=temp; End; If x1 > x2 Then Begin temp:=x1 ; x1 :=x2 ; x2 :=temp; End; If x2 > x3 Then Begin temp:=x2 ; x2 :=x3 ; x3 :=temp; End; If x1 > x2 Then Begin temp:=x1 ; x1 :=x2 ; x2 :=temp; End; |
Con 5 confronti/scambi
Prova con i numeri
1 2 3 4 5 6 7 8 9 10 |
+-----+-----+-----+-----+ | x1 | x2 | x3 | x4 | +-----+-----+-----+-----+------------+ | 100 | -8 | 10 | -25 | (x1 > x2)? | | -8 | 100 | 10 | -25 | (x3 > x4)? | | -8 | 100 | -25 | 10 | (x1 > x3)? | | -25 | 100 | -8 | 10 | (x2 > x4)? | | -25 | 10 | -8 | 100 | (x2 > x3)? | | -25 | -8 | 10 | 100 | | +-----+-----+-----+-----+------------+ |
Ci sono 4 valori da ordinare
1 2 3 4 5 |
+----+----+----+----+ | x1 | x2 | x3 | x4 | Prima +----+----+----+----+ | r1 | r2 | r3 | r4 | Dopo +----+----+----+----+ |
1 2 3 4 5 |
+----+----+----+----+------------+ | x1 | x2 | x3 | x4 | (x1 > x2)? | Confronta x1 con x2 e se necessario effettua lo scambio dei valori +-\/-+-\/-+----+----+------------+ | m1 | M1 | x3 | x4 | | m1 è un minimo locale, M1 è un massimo locale. +----+----+----+----+------------+ |
1 2 3 4 5 6 7 |
+----+----+----+----+------------+ | x1 | x2 | x3 | x4 | (x1 > x2)? | +-\/-+-\/-+----+----+------------+ | m1 | M1 | x3 | x4 | (x3 > x4)? | Confronta x3 con x4 +----+----+-\/-+-\/-+------------+ | m1 | M1 | m2 | M2 | | m2 è un minimo locale, M2 è un massimo locale. +----+----+----+----+------------+ |
1 2 3 4 5 6 7 8 9 |
+----+----+----+----+------------+ | x1 | x2 | x3 | x4 | (x1 > x2)? | +-\/-+-\/-+----+----+------------+ | m1 | M1 | x3 | x4 | (x3 > x4)? | +----+----+-\/-+-\/-+------------+ | m1 | M1 | m2 | M2 | (m1 > m2)? | Confronta m1 e m2, minimi locali +-\/-+----+-\/-+----+------------+ | r1 | M1 | i1 | M2 | | In 1° posizione il minimo globale, in 3° posizione un valore intermedio +----+----+----+----+------------+ |
1 2 3 4 5 6 7 8 9 10 11 |
+----+----+----+----+------------+ | x1 | x2 | x3 | x4 | (x1 > x2)? | +-\/-+-\/-+----+----+------------+ | m1 | M1 | x3 | x4 | (x3 > x4)? | +----+----+-\/-+-\/-+------------+ | m1 | M1 | m2 | M2 | (m1 > m2)? | +-\/-+----+-\/-+----+------------+ | r1 | M1 | i1 | M2 | (M1 > M2)? | Confronta M1 e M2, massimi locali +----+-\/-+----+-\/-+------------+ | r1 | i2 | i1 | r4 | | In 4° posizione il massimo globale, in 2° posizione un valore intermedio +----+----+----+----+------------+ |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
+----+----+----+----+------------+ | x1 | x2 | x3 | x4 | (x1 > x2)? | +-\/-+-\/-+----+----+------------+ | m1 | M1 | x3 | x4 | (x3 > x4)? | +----+----+-\/-+-\/-+------------+ | m1 | M1 | m2 | M2 | (m1 > m2)? | +-\/-+----+-\/-+----+------------+ | r1 | M1 | i1 | M2 | (M1 > M2)? | +----+-\/-+----+-\/-+------------+ | r1 | i2 | i1 | r4 | (i2 > i1)? | Confronta i1 e i2, valori intermedi +----+-\/-+-\/-+----+------------+ | r1 | r2 | r3 | r4 | | +----+----+----+----+------------+ |
Codifica
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
If x1 > x2 Then Begin temp:=x1 ; x1 :=x2 ; x2 :=temp; End; If x3 > x4 Then Begin temp:=x3 ; x3 :=x4 ; x4 :=temp; End; If x1 > x3 Then Begin temp:=x1 ; x1 :=x3 ; x3 :=temp; End; If x2 > x4 Then Begin temp:=x2 ; x2 :=x4 ; x4 :=temp; End; If x2 > x3 Then Begin temp:=x2 ; x2 :=x3 ; x3 :=temp; End; |