我想實現一個二進制搜索功能,我想知道如何修改新的數組與新的最小值/最大值。另外我是C++的新手,所以任何人都可以告訴我這是否是二進制搜索的正確實現?謝謝。我怎樣才能創建新的數組與修改的最大/最小值爲這個二進制搜索功能
#include <iostream>
using namespace std;
bool doSearch(int arr, int target)
{
int min = 0;
int max = arr.length() - 1;
while(min != max)
{
int avg = (min + max)/2;
if(arr[avg] < taget){
min = avg + 1
}
else if(arr[avg] > target){
max = avg - 1;
else if (arr[avg] == target)
{
return avg;
}
}
}
return -1;
}
int main()
{
int primes[]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,61,67,71,73,79,83};
int result = doSearch(primes , 47);
cout<<"Found prime at index " <<result;
}
格式化您的代碼。幾行中沒有分號。 – arsho
我認爲你應該讓你的代碼先編譯,然後修復實現,一旦你有一些你可以迭代的結果。對於初學者來說,C++不支持切分原始數組類型,所以你不能做類似'arr [min:max]'的事情。也許看看'std :: array'類,它提供了你正在嘗試使用的一些功能。 – avigil