Sto lavorando su un algoritmo che funziona meglio se gli input vengono passati ad esso in un ordine particolare, quindi voglio ordinarli in quel modo. La differenza è abbastanza drastica da prendere in considerazione la possibilità di riordinare l'array.
Considera un array a con lunghezza n . Voglio ordinarlo nel seguente modo e restituire la matrice di indici di a invece dei valori:
Definisco un altro array w , anche di lunghezza n . Voglio ordinare in modo che il primo elemento sia il più vicino al primo elemento di w . Quindi, dal resto degli elementi (escluso quello già ordinato), il secondo elemento è il più vicino al secondo elemento di w , e così via.
Ad esempio a = {5.5, 6.5, 2.4, 3.1} , w = {1, 2, 6, 5} .
2.4 è più vicino a 1 , quindi output[0] = 2 , l'indice di 2.4 .
2.4 è più vicino a 2 , ma già elaborato, quindi scegli 3.1 , output[1] = 3 .
Seguono 0 e 1 , in quest'ordine. 0 viene scelto perché viene prima, sebbene entrambi siano equidistanti.
Quindi, output = {2, 3, 0, 1} e l'array ordinato saranno sorted = {2.4, 3.1, 5.5, 6.5} (ogni indice viene utilizzato per trovare l'elemento corrispondente).
Posso solo pensare a forzare questo algoritmo. Ci può essere un modo più efficiente per farlo?