Elaborare l'elemento più piccolo o più grande, a seconda che è più vicino (in valore, non indice) all'elemento iniziale, quindi elabora semplicemente gli elementi rimanenti a destra o a sinistra (a seconda che abbiamo elaborato il più piccolo o il più grande elemento ).
Quindi, dato 4,9,10,11,19
a partire da 10
:
La distanza da 10
All'elemento più piccolo 4
è 6, la distanza da 10
All'elemento più grande 19
è 9, quindi passa a 4
.
Quindi elabora gli elementi rimanenti in ordine ordinato - 9, 11, 19
.
Questo ci dà 10 -> 4 -> 9 -> 11 -> 19
, che costa 6 + 5 + 2 + 8 = 21
.
Questo può essere fatto in O(n)
.
Nota:
Vale la pena notare che fintanto che ci muoviamo per la prima volta verso il lato più vicino, quindi verso l'altro lato (indipendentemente da quali elementi elaboriamo quando, purché non cambiamo direzione più di una volta), otterremo un risultato ottimale .
Ecco perchè 10 -> 9 -> 4 -> 11 -> 19
dà anche 21
.