Ok provo a buttare una soluzione anche perchè interessa anche a me avere un parere da più esperti.

Se per soluzione vicino più vicino intendi spostarsi dal punto di partenza al più vicino io farei in questo modo :
Due cicli for

1° for della dimensione del array
dentro il primo form cancello il dato della mia partenza
2° for dimensione array (che ora sarà di meno uno dato l'eliminazione della dato di partenza)
calcolo la distanza tra tutti i punti e di volta in volta mi salvo il puù vicino (confrontando il valore calcolato con il precedente calcolo salvato in una apposita variabile)

Questa soluzione però non è corretta dato che non ti riporta al punto di partenza e di conseguenza il tragitto non è quello ottimale...

Esistono su internet diversi algoritmi da applicare per il calcolo del percorso ottimale siccome si tratta di un interrogativo molto discusso e gli algoritmi per ottenere un risultato soddisfacente sono Branch-&-Bound, Branch-&-Cut oppure euristiche come Nearest Neighbor.

Bo spero di essere stato di aiuto