Sto scrivendo un ordinamento di selezione che, data una matrice di elementi non ordinati, riempirà un nuovo array con gli indici degli elementi ordinati. Ad esempio,Selezione ordinamento recupero indice errato dell'array
[3, 2, 1]
ritornerebbe
[2, 1, 0] // original indexes of sorted array [1, 2, 3]
Purtroppo, riempie l'array errato, ripetendo lo stesso indice su un over.
Questo è il mio codice:
void sort(float data[], int indx[], int len) {
int min;
float temp;
float tempData[len];
for (int x = 0; x < len; ++x){
tempData[x] = data[x];
}
for (int i = 0; i < len; ++i) {
min = i;
for (int j = i + 1; j < len; ++j) {
if (tempData[j] < tempData[min]) {
min = j;
}
}
temp = tempData[i];
tempData[i] = tempData[min];
tempData[min] = temp;
indx[i] = min;
}
}
E data questa matrice:
[8.5, 10.0, 9.25, 12.5, 12.75, 12.5, 16.0, 14.75, 17.0, 18.0, 21.0, 13.0, 7.25];
restituisce:
[12, 12, 2, 12, 5, 12, 12, 11, 11, 12, 11, 12, 12]
io non riesco a capire dove l'errore logico sta succedendo. Qualcuno potrebbe aiutarmi a trovarlo?
Sono curioso di sapere perché le persone stanno facendo downvoting di questo.È una domanda ben definita. – m0meni
Chiedendosi esattamente questo. @ AR7 –