我正在尝试使用此二进制搜索代码搜索降序排序数组。但是,在对它进行排序并尝试搜索后,它不会返回任何结果,只是一个永远不会消失的加载图标,就好像它具有无限循环一样。我不确定问题是什么,因为代码看起来合乎逻辑。排序数组的二进制搜索
这是aspx 4.0 framework,c#。提前致谢!
protected void Button2_Click(object sender, EventArgs e)
{
String item = TextBox1.Text;
int target = Convert.ToInt16(item);
int mid, first = 0, last = mynumbers.Length - 1;
//for a sorted array with descending values
while (first<=last)
{
mid = (first + last)/2;
if (target < mynumbers[mid])
first = mid + 1;
if (target > mynumbers[mid])
last = mid - 1;
else
Label11.Text = "Target " + item + " was found at index " + mynumbers[mid];
}
我想......应该是'第一
Joe
我试过了。接下来发生的事情是同样的事情,或者它做了一些奇怪的事情,只给出最后一个数字的结果。 –
实际上,<=是正确的,您需要通过==条件的循环,因为它们可能在最后一次通过时聚合在同一位置,并且您需要查看该项是否等于目标。 –