C++:这些按位 AND 和以下比较有什么作用?

标签 c++ algorithm median

我目前正在完成使用两个堆查找中位数的实现: No. 30 - Median in Stream

我理解一般的基本算法,但我不确定这个具体的实现是如何工作的。具体来说,我对这两行的作用感到非常困惑:

if(((minHeap.size() + maxHeap.size()) & 1) == 0)
....
if(size & 1 == 1)

我相信我理解按位与 - 它接受两个数字并以二进制形式输出一个数字。通过比较 == 0 或 == 1,它会逐字检查按位 AND 分别是 0 还是 1。但是,在寻找中位数的情况下,这到底有什么作用呢?我知道保持堆“均匀”(并保持两个堆之间的中位数)很重要,但除此之外我不完全确定。这真的只是一种检查尺寸是否不同的方法吗?

最佳答案

我相信如果最低位为零,则第一个测试为真,即总和为偶数。如果 size 是奇数(即设置了 LSB),则第二个测试为真。

关于C++:这些按位 AND 和以下比较有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28952567/

相关文章:

c++ - OpenGL 教程错误

java - 基于宽度和高度(坐标和大小)计算值的算法

algorithm - 大O,您如何计算/近似?

Python:字典键值对 Pandas 值的平均值

c++ - constexpr for 循环编译

c++ - 'const'最后在类的函数声明中的含义?

c++ - 如何在C++中编写通用对象池

python - 有效检查相邻准确性(组成员资格?)

r - 如何在 R 中将数据帧转换为数组?