Prova con i numeri
+-----+-----+-----+ | x1 | x2 | x3 | +-----+-----+-----+------------+ | 100 | 9 | -8 | (x1 > x2)? | | 9 | 100 | -8 | (x2 > x3)? | | 9 | -8 | 100 | (x1 > x2)? | | -8 | 9 | 100 | | +-----+-----+-----+------------+
In generale
+----+----+----+ | x1 | x2 | x3 | Prima +----+----+----+ | r1 | r2 | r3 | Dopo +----+----+----+
+----+----+----+------------+ | x1 | x2 | x3 | (x1 > x2)? | Confronta x1 con x2 e se necessario effettua lo scambio dei valori +-\/-+-\/-+----+------------+ | m1 | M1 | x3 | | m1 è un minimo locale, M1 è un massimo locale. +----+----+----+------------+
+----+----+----+------------+ | x1 | x2 | x3 | (x1 > x2)? | +-\/-+-\/-+----+------------+ | m1 | M1 | x3 | (M1 > x3)? | Confronta M1 con x3 +----+-\/-+-\/-+------------+ | m1 | i1 | r3 | | In 3° posizione il massimo globale, in 2° posizione un valore intermedio. +----+----+----+------------+
+----+----+----+------------+ | x1 | x2 | x3 | (x1 > x2)? | +-\/-+-\/-+----+------------+ | m1 | M1 | x3 | (M1 > x3)? | +----+-\/-+-\/-+------------+ | m1 | i1 | r3 | (m1 > i1)? | Confronta m1 con i1 +-\/-+-\/-+----+------------+ | r1 | r2 | r3 | | In 1° posizione il minimo globale, in 2° il valore intermedio. +----+----+----+------------+
Per ordinare 3 dati sono necessari 3 confronti ed eventualmente 3 scambi
Codifica
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;