Ich versuche eine Funktion in C/C++ zu erstellen, um ein Array zu sortieren und jeden Wert durch seinen "Score" oder Rang zu ersetzen. Es nimmt ein Doppelzeiger-Array zu einem Array von Ints auf und sortiert die Doppelzeiger basierend auf dem dereferenzierten Wert der Ganzzahlen. Ich habe es schon einige Male versucht, um es zum Laufen zu bringen, aber ich bekomme es nicht hin. Erneut muss er die Doppelzeiger basierend auf den Werten sortieren, auf die sie zeigen. Das ist was ich habe:Wie kann ich ein Array von Doppelzeigern basierend auf den Werten sortieren, auf die sie zeigen?
void SortArray(int ** pArray, int ArrayLength)
{
int i, j, flag = 1; // set flag to 1 to begin initial pass
int * temp; // holding variable orig with no *
for(i = 1; (i <= ArrayLength) && flag; i++)
{
flag = 0;
for (j = 0; j < (ArrayLength -1); j++)
{
if (*pArray[j+1] > *pArray[j]) // ascending order simply changes to <
{
temp = &pArray[j]; // swap elements
pArray[j] = &pArray[j+1];
pArray[j+1] = &temp;
flag = 1; // indicates that a swap occurred.
}
}
}
}
Siehe auch http://stackoverflow.com/questions/5632832/sort-an-array-based-on-an-index-array-in-c, in dem ich zwei Beispiele gebe. Mit O (log (n)) und nicht mit O (N^2) – elcuco