我正在嘗試使用二進制搜索在字串向量中查找用戶輸入單詞。但它總是回傳一個正整數。向量被排序并從 txt 檔案中讀取。該檔案看起來像。
aah
aal
aas
等等。
int binarySearchString(vector<string> arr, string x, int n) {
int lower = 0;
int upper = n - 1;
while (lower <= upper) {
int mid = lower (upper - lower) / 2;
int res;
if (x == (arr[mid]))
res = 0;
if (res == 0)
return mid;
if (x > (arr[mid]))
lower = mid 1;
else
upper = mid - 1;
}
return -1;
}
uj5u.com熱心網友回復:
事實上,除非x == (arr[mid])為真,否則這段代碼應該拋出一個運行時例外,因為res在它被初始化之前將在下一個 if 陳述句中使用。當我初始化res為某個負值時,該函式似乎可以作業。
int binarySearchString(vector<string> arr, string x, int n) {
int lower = 0;
int upper = n - 1;
while (lower <= upper) {
int mid = lower (upper - lower) / 2;
int res = -2;
if (x == (arr[mid]))
res = 0;
if (res == 0)
return mid;
if (x > (arr[mid]))
lower = mid 1;
else
upper = mid - 1;
}
return -1;
}
binarySearchString(words, "bbb", 3);用return呼叫它-1。
int main()
{
vector<string> words;
words.push_back("aah");
words.push_back("aal");
words.push_back("aas");
int retVal = binarySearchString(words, "bbb", 3);
std::cout << "Returned: " << retVal << std::endl;
system("pause");
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/438333.html
