问题遇到的现象和发生背景
用二分法在一个有序数列{1,2,3,4,5,6,7,8,9,10}中查找key值,若找到key则输出其在数组中对应的下标,否则输出not found。
请帮忙纠错 我输入后结果错误 输入四结果是5
using namespace std;
int search(int* arr, int m, int M, int k) {
while (m < M) {
int mid = (m + M) / 2;
if (arr[mid] = k) {
return mid+1 ;
}
else if (arr[mid] << k) {
m = mid + 1;
}
else {
M = mid - 1;
}
}
cout << "not found";
return -1;
}
int main(){
int a[] = { 1,2,3,4,5,6,7,8,9,10 };
int k;
cin >> k;
cout<<search(a, 0, 9, k);
system("pause");
return 0;
}