我幾乎肯定這是一件簡單的事情,但我不能爲我的生活弄清楚它。這整個代碼是打印一個菜單,詢問用戶和數組大小,然後用隨機數填充它,對其進行升序和降序排序,打印數組,並讓用戶使用二分搜索或順序搜索。我知道線性搜索對於我們應該做的事情來說效率要高很多,但教練堅持要進行二分搜索。我有二進制搜索工作,並打印出正確的結果,但在其結尾處有一個1(即位置14出現爲141)。下面是調用該函數的開關情況:二進制搜索在輸出結束時不斷添加1
case 7:
int num, result;
cout << "Please enter an int to search for" << endl;
cin >> num;
result = binarySearch(Array1, num, 0, size);
cout << num << "was found at position " << result;
break;
}
}
這裏是功能:
int binarySearch(int arr[], int key, int first, int last)
{
while (first <= last)
{
int mid = (last + first)/2;
if (key < arr[mid])
{
last = mid - 1;
}
else if (key > arr[mid])
{
first = mid + 1;
}
else
{
return mid;
}
}
return -1;
}
你不這樣做'COUT << ENDL。; '所以額外的'1'來自其他地方。 – Roddy
因爲1是打印出來的,不管你是什麼搜索,二進制搜索邏輯不太可能存在問題。 binarySearch方法是正確的。你可以發佈切換條件後發生的事情嗎? –
這就是爲什麼你應該在提出問題之前嘗試做一個簡潔的測試用例。你會發現你認爲的問題是問題不是問題。 – Cogwheel