- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我希望使用 std::stable_sort
。算法的复杂度表示为
O(N·log^2(N)), where N = std::distance(first, last) applications of cmp. If additional memory is available, then the complexity is O(N·log(N)). http://en.cppreference.com/w/cpp/algorithm/stable_sort
在我的应用程序中,内存至关重要,因此,我更喜欢 std::stable_sort
使用内存优化的 O(N·log^2(N))算法,而不是时间优化的 O(N·log(N)) 算法。我了解只有在安全的情况下才会选择时间优化版本这样做(可用内存)。但是,我的目标是对我的应用程序进行基准测试,因此,由于内存至关重要,因此希望在内存消耗最低时对算法进行基准测试。由于我的系统目前有足够的内存来分配缓冲区,它会自动选择 std::stable_sort
的 O(N·log^2(N)) 版本。因此,我想向 std::stable_sort
断言采用内存优化版本。这可能吗?
执行策略出现是可以修改算法的参数,但是,它似乎只改变并行的程度。 http://en.cppreference.com/w/cpp/algorithm/execution_policy_tag_t
虽然选择了并行或顺序版本实际上可能选择 O(N·log(N)) 或O(N·log^2(N)) 个版本,网页上没有说明。
我想知道是否有人有任何主张这种选择的经验。如果是这样他们能提供任何建议吗?
最佳答案
您可以查看您的 header ,看看如果额外的缓冲区不可用,则调用哪个函数。对我来说 gcc 是
std::__inplace_stable_sort(__first, __last, __comp);
这当然不符合标准。 __inplace_stable_sort 是一个辅助函数,不能直接使用。
std::stable_sort 对该函数的调用是以下代码的结果
typedef _Temporary_buffer<_RandomAccessIterator, _ValueType> _TmpBuf;
_TmpBuf __buf(__first, __last);
if (__buf.begin() == 0)
std::__inplace_stable_sort(__first, __last, __comp);
else
std::__stable_sort_adaptive(__first, __last, __buf.begin(),
_DistanceType(__buf.size()), __comp);
关于c++ - std::stable_sort:如何选择内存优化算法而不是时间优化算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44947510/
我在使用 std::stable_sort 时一直遇到类型问题我不断收到错误消息: argument of type 'bool (Memory::)(const Mem&, const Mem&)'
我想对 int32_t 数组进行排序,使得所有正数(包括零)首先出现,然后是所有负数。输出中 +ve 和 -ve 数字的相对顺序应与输入的相对顺序相同。例如。 Input : 9, 4, -2, -
我有一个 std::vector of Object,Object 可以是 Empty 或 NotEmpty(这是一个内部状态,Object 本身总是有效的)。 我想按内部状态对 vector 进行排
在标量类型(即 int、long、等)与默认比较器? 如果是这样,你应该什么时候做? 如果不是,那么为什么标准库不直接将此类调用转发给 sort?那不是更快吗? 最佳答案 稳定排序仅在您排序的项目具有
这page告诉我们,每当内存不足时,stable_sort 都会缩减为运行时间为 O(n(log n)(log n)) 的就地算法: Complexity If enough extra memory
我正在使用 C++ stable_sort 使用比较器函数按升序对我的类对象的 vector 进行排序,但排序不稳定。一种可行的解决方法是反向迭代并反转比较器中的逻辑。但不明白为什么它不应该正常工作。
各位程序员,您好,我正在解决有关leetcode的问题,该问题需要稳定排序。 问题链接:https://leetcode.com/problems/rearrange-words-in-a-sente
我已经定义了一个结构 ABC 来包含一个 int ID、字符串 NAME、字符串 LAST_NAME; 我的程序是这样的:从输入文件中读取一行。将每一行解析为名字和姓氏,并插入到 ABC 结构中。此外
我在使用 std::stable_sort 时遇到了一个奇怪的错误在 Point 上数据类型。默认排序 Point值首先由 x 坐标确定,然后由 y 坐标确定以打破平局。但是,我正在使用 std::s
#include #include #include #include using namespace std; bool foo(string&s1, string&s2); int mai
我称之为 bool cmpNAME(const PlayerCard& a, const PlayerCard& b){ return (a.Name tmp; //fill tmp sta
我希望使用 std::stable_sort。算法的复杂度表示为 O(N·log^2(N)), where N = std::distance(first, last) applications of
通过阅读《C++ sort()排序函数》一节,读者已经了解了 sort() 函数的功能和用法。值得一提的是,当指定范围内包含多个相等的元素时,sort() 排序函数无法保证不改变它们的相对位置。那么,
我有以下简单程序。在 test1 和 test2 中,我尝试对 2 个字符串“2”和“1”进行排序,在下面的示例中,函数 compare 将始终返回错误。 #include #include #i
如果我将 lambda 作为引用参数传递给排序算法,它就可以正常工作。但是当我将相同的 lambda 传递给 stable_sort 时,它没有编译,我必须声明参数 const?为什么会这样? //
struct SimGenRequest { int wakeup_mfm_; double value_; bool operator #include #include
我有 class Passanger有变量 string name; string station; string ticket;然后我有另一个类,在这个类中我有 vector myQueue; 现在
这是文档: val sort : ('a -> 'a -> int) -> 'a list -> 'a list 根据比较函数对列表进行升序排序。如果比较函数的参数比较相等,则比较函数必须返回 0,如
这个问题在这里已经有了答案: What causes std::sort() to access address out of range (2 个回答) 1年前关闭。 https://leetcod
我有大量整数需要排序。这里要注意的是,列表中的每个条目都包含许多其他关联元素,这些元素在排序时需要跟在该 int 周围。我已经通过将排序更改为对 double 而不是整数进行排序来解决这个问题。我在每
我是一名优秀的程序员,十分优秀!