sagen, dass ich eine Menge von Datenpunkten, die als ein Array von Arrays von Doppel vertreten sind, soSortieren ein Array von Arrays von verschiedenen Indizes in C
double **data;
Nun, wenn ich durch die die Daten sortieren wollte einige Feld in jedem der Datenpunkte, sagen die 2 nd Feld, würde ich einen Komparator schreiben, die so etwas wie tun würde: qsort
sie durch die 2 nd fi
int compare_data_second_field(void *a, void *b) {
double da = ((double *) a)[1];
double db = ((double *) b)[1];
if (da < db) return -1;
else if (da > db) return 1;
return 0;
}
und verwenden sie dann zu sortieren Feld
Meine Frage ist, wie verallgemeinere ich das, wenn ich nicht vorher weiß, welches Feld ich sortieren möchte? Wie ich vielleicht nach dem Feld manchmal sortieren möchte und manchmal auch wollen, dass es threadsicher ist, also möchte ich keine globale Variable verwenden, um den Überblick zu behalten Feld, nach dem sortiert werden soll, da mehrere davon gleichzeitig ausgeführt werden können.
In C++ würde ich einfach eine benutzerdefinierte Sortierklasse verwenden und eine Instanzvariable in der Klasse haben, um zu verfolgen, nach welchem Feld sortiert werden soll. Ich weiß nicht, wie man so etwas in C. macht.
Sie greifen tatsächlich den _third_ Artikel. Bist du dir dessen bewusst? –
Eigentlich ist 'double ** data;' 'double data **;' –
Edited für beide.Während sie wahr sind, sind sie für die Diskussion völlig irrelevant und fügen nichts wirklich hinzu, aber was auch immer. – pjreddie