Ho un array di 3 valori in virgola mobile:C - In ordine galleggiare matrice tenendo traccia di indici
float norms[3];
norms[0] = 0.4;
norms[1] = 3.2;
norms[2] = 1.7;
voglio ordinare questa matrice per decrescente tenendo traccia degli indici originali dei valori nell'array.
In altre parole, data la gamma norms[] = {0.4, 3.2, 1.7}
con corrispondenti indici {0, 1, 2}
, io fondamentalmente vogliono ottenere una serie di corrispondenti ints
che riflette le posizioni originali dei valori float
in norms[]
seguenti quello discendente. In questo caso sarebbe {1, 2, 0}
.
Qual è il modo migliore/più pulito per raggiungere questo obiettivo?
Creare un array di tipo int con la stessa dimensione contenente gli indici. Quando si ordina l'array float si rispecchia semplicemente qualsiasi operazione di swap sul proprio array int. – jboockmann
Utilizzare una struttura con un campo indice, scrivere l'indice di ciascun elemento prima dell'ordinamento e che manterrà la posizione originale nell'array. –
Basta fare una copia dell'array originale. Questo è tutto. Non sono necessari algoritmi di ottimizzazione pre-mature e fangosi. Andando avanti ... – Lundin