使用自定义交换的 C++ 排序实现?

标签 c++ sorting swap

关于如何在 C++ 中一次对多个数组进行排序,有很多问题被问到。答案总是相同的,即使用结构 vector 而不是多个数组。不幸的是,由于多种原因(I/O、部分 MPI 传输、矢量化单元的利用等),我不能这样做。此外,由于内存限制,我无法在排序后将结构数组转换为独立数组。我的问题是,是否存在任何可以与自定义交换(和自定义比较)操作一起使用的高效 (n log n) 排序算法的 C++ 实现?

(我仍然不明白为什么STL中缺少这样一个选项。显然,很多C++程序员都在要求它。)

最佳答案

您可以不完全对数据进行排序,而只能对其他数组和自定义比较器的索引进行排序。排序后,您将拥有排序索引数组,对于 O(n) 您可以置换所有数组。

关于使用自定义交换的 C++ 排序实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22483360/

相关文章:

c++ - Boost 单元测试和 Visual Studio 2005/Visual C++ 以及 BOOST_AUTO_TEST_SUITE(stringtest) 命名空间?

Python排序两个键两个顺序

java - 有谁知道如何使用 array.sort() 对堆栈进行排序?我只想按 x 坐标打印点的有序列表。任何想法?

javascript - 奇怪的 javascript 行为(作业)

c++ - 如何重载结构的空运算符?

c++ - 普里姆算法 : show concerned edges with summation of edges weights

javascript - 对具有相同类级别的不同 li 元素进行排序

c - 交换字符位并在交换后将其替换为新创建的字符

c++ - 基于交换的排序算法的交换次数的奇偶性

c++ - 成员函数比较作为谓词