2.编写函数( BinSearch(int a[],int n,int x),功能为在一维整数数组a中(数据递减存储,从下标0开始,数组大小为n),以折半查找的思想查找某个整数x,找到返回下标,否则返回-1 并在main函数中进行调用测试。
时间: 2024-03-12 14:44:53 浏览: 54
二叉查找算法-matlab做卷积字典学习
好的,这是一个折半查找函数的实现,以下是代码:
```c++
int BinSearch(int a[], int n, int x) {
int left = 0;
int right = n - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (a[mid] == x) {
return mid;
} else if (a[mid] < x) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1;
}
int main() {
int a[] = {10, 8, 6, 4, 2};
int n = 5;
int x = 6;
int index = BinSearch(a, n, x);
if (index != -1) {
cout << "找到了,下标为: " << index << endl;
} else {
cout << "没找到!" << endl;
}
return 0;
}
```
这段代码中,我们首先定义了 `BinSearch` 函数,它接收三个参数:
- `a[]`:表示要查找的数组;
- `n`:表示数组的大小;
- `x`:表示要查找的元素。
然后,我们使用折半查找的思想,在 `while` 循环中进行查找,如果找到了,就返回元素的下标,如果没找到,就返回 `-1`。
在 `main` 函数中,我们定义了一个数组 `a`,大小为 `5`,然后我们调用 `BinSearch` 函数查找元素 `6`,最后根据返回值判断是否找到了元素。
阅读全文