c++ - 计数倒置 C++

标签 c++ algorithm memory mergesort

我正在尝试使用嵌套循环和合并排序来实现计数倒置算法。但是,我不断收到错误消息,例如

对于嵌套循环实现。而且嵌套循环算法有时不起作用(它有几次错误地返回0)。而且归并排序算法时不时崩溃,有错误提示

double free or corruption (out)

并像嵌套循环算法一样错误地返回 0。在我看来,主要也不能很好地工作..

最佳答案

count_inversions_fast(array, (int)sizeof(array)) << endl;

您无法通过这种方式使用 sizeof 确定数组的运行时大小。它将始终是 sizeof(int*)(更普遍的是 void* 的大小)。在 32 位平台上为 4 个字节,在 64 位平台上为 8 个字节。它将始终提供恒定的编译时间大小。您需要使用:

count_inversions_fast(array, values.size()) << endl;

关于c++ - 计数倒置 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37851067/

相关文章:

c++ - 使用 boost::future 和 "then"延续

c++ - 桌面集成应用程序(类似桌面小部件)

python - 给定一个单词列表,识别长度为 4 或更大的所有相同子串

memory - 如何在 Google 电视模拟器中增加内存大小

c++ - 将禁用的复制构造函数置于私有(private)状态

c++ - 使用 ZLIB 库 C++ 膨胀(解压缩)PNG 文件

c++ - 通过原始蒙皮生成 3D 模型

algorithm - 方案中的最佳优先搜索算法

c - 我如何发现 Valgrind 中被抑制的错误?

c++ - 在 bool 中写入非 0 或 1 的值是 UB 吗?如果是,他们如何比较?