【发布时间】:2011-12-25 10:36:27
【问题描述】:
我正在尝试使用此二进制搜索代码搜索降序排序的数组。但是,在我对其进行排序并尝试搜索之后,它没有返回任何结果,只是一个加载图标,永远不会消失,就好像它有一个无限循环一样。我不确定问题出在哪里,因为代码看起来很合乎逻辑。
这是带有 4.0 框架的 aspx,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];
}
【问题讨论】:
-
我认为...应该是
first < last,而不是<= -
我也试过了。然后发生的是同样的事情,或者它做了一些奇怪的事情,只给我最后一个数字的结果。
-
其实
-
这让我想起了我以前在圣路易斯的夜校上用 C++ 教授算法和数据结构时的各种回忆......
标签: c# arrays binary-search