搜索未排序数组中的数字

时间:2015-12-15 15:00:23

标签: c++ arrays search

我有一个代码,用于搜索数组中的给定条目,并返回该条目数组中的位置,前提是有人知道该数组包含该数字。然而,一件奇怪的事情发生了。当我尝试使用一些具体的数组测试代码时,代码适用于某些条目,并且对其他条目不起作用。代码是这样的:

{{1}}

(在以前的版本中,我使用floor函数将a中包含的数字四舍五入到它们的整数部分,但我知道这不是必需的。)

我已经测试了程序,例如这个主要的以下数组:

{{1}}

当我在这个例子中输入x = 12时,程序给出了正确的答案1. x = 3,x = 11和x = 9的情况相同。但如果我输入x = 7或x = 5,程序拒绝提供输出,我收到一条消息,如

“处理终止,状态为-1073741510(0分钟,9秒(s))”。

有人可以解释一下这里的问题是什么吗?如何修复代码?谢谢大家的答案。

2 个答案:

答案 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)

二进制搜索仅适用于已排序的输入。