我正在嘗試使用此二進制搜索代碼搜索降序排序數組。但是,在對它進行排序並嘗試搜索後,它不會返回任何結果,只是一個永遠不會消失的加載圖標,就好像它具有無限循環一樣。我不確定問題是什麼,因爲代碼看起來合乎邏輯。排序數組的二進制搜索
這是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
我試過了。接下來發生的事情是同樣的事情,或者它做了一些奇怪的事情,只給出最後一個數字的結果。 –
實際上,<=是正確的,您需要通過==條件的循環,因爲它們可能在最後一次通過時聚合在同一位置,並且您需要查看該項是否等於目標。 –