Prova con i numeri
+-----+-----+-----+
| x1 | x2 | x3 |
+-----+-----+-----+
| 100 | 9 | -8 | (x1 > x2)? Sì, scambia
| 9 | 100 | -8 | (x2 > x3)? Sì, scambia
| 9 | -8 | 100 | (x1 > x2)? Sì, scambia
| -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 | Adesso m1 è un minimo locale e M1 è un massimo locale
+----+----+----+
+----+----+----+
| x1 | x2 | x3 | (x1 > x2)?
+-\/-+-\/-+----+
| m1 | M1 | x3 | (M1 > x3)? Confronta M1 con x3
+----+-\/-+-\/-+
| m1 | i1 | r3 | In 3° posizione c'è 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 Pascal
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;