在 C 中使用索引跟踪进行排序
在保留原始索引的同时对数据进行排序是数据分析和操作中的常见任务。在 C 中,实现这一点需要一些深思熟虑的编程技术。
要按升序对样本序列进行排序,同时跟踪其原始索引,可以利用 lambda 表达式和标准库。下面的 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中文网其他相关文章!