我有一个代码,用于搜索数组中的给定条目,并返回该条目数组中的位置,前提是有人知道该数组包含该数字。然而,一件奇怪的事情发生了。当我尝试使用一些具体的数组测试代码时,代码适用于某些条目,并且对其他条目不起作用。代码是这样的:
{{1}}
(在以前的版本中,我使用floor函数将a中包含的数字四舍五入到它们的整数部分,但我知道这不是必需的。)
我已经测试了程序,例如这个主要的以下数组:
{{1}}
当我在这个例子中输入x = 12时,程序给出了正确的答案1. x = 3,x = 11和x = 9的情况相同。但如果我输入x = 7或x = 5,程序拒绝提供输出,我收到一条消息,如
“处理终止,状态为-1073741510(0分钟,9秒(s))”。
有人可以解释一下这里的问题是什么吗?如何修复代码?谢谢大家的答案。
答案 0 :(得分:3)
您不能对未排序的数组使用二进制搜索。使用线性搜索。
int Find_entry(int data[], int n, int x)
{
int a = 0;
while (a < n && x != data[a]) a++;
return a;
}
答案 1 :(得分:1)
二进制搜索仅适用于已排序的输入。