LinearAccelerationEvent
我正在尝试在OCaml中进行二进制搜索。这段代码有什么问题?它总是返回-1。它是一个字符串数组,以便比较元素给出值0,-1或1,如果它们相等,第一个元素较小,第一个元素分别大(文档说明正负整数但我已在解释器中测试并收到1和-1) )。关于我在这里犯的错误的暗示?
答案 0 :(得分:2)
将此if (String.compare arr.(mid) word = 1)
更改为-1
。
String.compare
会返回1
。
注意:所采用的一般方法包含维基百科文章中描述的较小的已知错误: https://en.wikipedia.org/wiki/Binary_search_algorithm#Implementation_issues
基本上,将mid
计算为(min + max) / 2
可以为足够大的数字提供整数溢出。