Heim >Backend-Entwicklung >C++ >Wie kann ich Daten in C sortieren, während ich Originalindizes verfolge?
Sortieren mit Indexverfolgung in C
Das Sortieren von Daten unter Beibehaltung der Originalindizes ist eine häufige Aufgabe bei der Datenanalyse und -bearbeitung. In C erfordert dies einige durchdachte Programmiertechniken.
Um eine Folge von Samples in aufsteigender Reihenfolge zu sortieren und dabei ihre ursprünglichen Indizes zu verfolgen, kann man Lambda-Ausdrücke und die Standardbibliothek verwenden. Die Funktion sort_indexes unten veranschaulicht diesen Ansatz:
template <typename T> vector<size_t> sort_indexes(const vector<T> &v) { // Initialize original index locations vector<size_t> idx(v.size()); iota(idx.begin(), idx.end(), 0); // Sort indexes based on values in v using std::stable_sort to maintain original order for equal values stable_sort(idx.begin(), idx.end(), [&v](size_t i1, size_t i2) { return v[i1] < v[i2]; }); return idx; }
Diese Funktion gibt einen Indexvektor zurück, der in nachfolgenden Iterationen verwendet werden kann:
for (auto i : sort_indexes(v)) { cout << v[i] << endl; }
Anpassungen können vorgenommen werden, um eine Sortierfunktion bereitzustellen. Komparator oder automatische Neuordnung des Originalvektors innerhalb der Funktion sort_indexes.
Das obige ist der detaillierte Inhalt vonWie kann ich Daten in C sortieren, während ich Originalindizes verfolge?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!