基数排序C++不屏蔽位
Radix Sort C++ Not masking bits
我有一个队列和一个队列数组。buckets
是数组,collector
是队列。pass
是一个整数,用于保存它的传递。我有一个方法,它会返回队列中第一个单元格peek()
的包含内容。shiftOne()
是一种将一个队列的头部移动到另一个队列尾部的方法。
现在这个代码不适用于我
bucket[((collector.peek()>>(pass * 8)) &0xFF)].shiftOne(collector);
我一步一步地走,结果发现我没有正确地掩盖这些部分。我可以移动它们,但仅此而已。所以我将尝试访问10元素数组的元素102。我做错了什么?我知道peek()
和shiftOne()
,因为我可以使用幂和模进行排序。
您混淆了基数-10和基数-2。
比特移位被2除,因此例如:102 >> 1
=102 / 2
=51。
类似地:102 >> 8
=102 / 2^8
=102 / 256
=0(在int
术语中)。
例如,代码(i >> 8) & 0xFF
用于提取给定i
值的第二字节的内容。
对于你的情况,坚持用模数除以10。
相关文章:
- 如何取消对nullptr的屏蔽,返回正确的对象
- 无法驱动带有 Adafruit 电机屏蔽 V2.3 的直流电机
- 在Windows中将用户输入屏蔽为星号
- 从位集屏蔽特定模式
- 在 CPP 中使用正则表达式将密码("ABC")子句屏蔽为密码("****")
- 通过屏蔽 UI 中的所有其他控件,在 UWP 应用 (c++) 中的现有 MainPage.xaml 顶部显示进度条
- 为什么在将窄字符串转换为宽字符串时用0xFF屏蔽字符?
- C++默认参数通过_CrtMemDifference屏蔽内存泄漏检测
- 用 1M 个条目有效地屏蔽了 30% 的阵列
- 为什么 ARM 使用两个指令来屏蔽一个值
- 密码屏蔽(不重复)
- 密码屏蔽(输入显示为********)
- c++密码存储.txt文件+屏蔽输入
- 在c++登录程序中屏蔽密码
- 分支屏蔽如何在 CryENGINE 3 中工作
- 通过Arduino上的gprs屏蔽接收短信
- OpENCV和UNSHARP屏蔽如Adobe Photoshop
- 我的位屏蔽有什么问题?
- 为什么 printf 可以屏蔽竞争条件,而系统日志不能?
- 如何在opencv中屏蔽浮垫