C でのインデックス追跡による並べ替え
元のインデックスを保持しながらデータを並べ替えるのは、データ分析と操作における一般的なタスクです。 C でこれを実現するには、いくつかの思慮深いプログラミング手法が必要です。
元のインデックスを追跡しながらサンプルのシーケンスを昇順に並べ替えるには、ラムダ式と標準ライブラリを利用できます。以下の sort_indexes 関数は、このアプローチを示しています。
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; }
この関数は、後続の反復で使用できるインデックス ベクトルを返します。
for (auto i : sort_indexes(v)) { cout << v[i] << endl; }
並べ替え関数を提供するようにカスタマイズできます。コンパレータ、または sort_indexes 関数内の元のベクトルの自動並べ替え。
以上が元のインデックスを追跡しながら C でデータを並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。