编写一个c加加折半查找程序
时间: 2024-05-14 22:14:41 浏览: 120
以下是一个C++实现的折半查找算法:
```cpp
#include <iostream>
using namespace std;
int binarySearch(int arr[], int n, int key) {
int low = 0, high = n - 1;
while (low <= high) {
int mid = (low + high) / 2;
if (arr[mid] == key) {
return mid;
} else if (arr[mid] > key) {
high = mid - 1;
} else {
low = mid + 1;
}
}
return -1; // 如果没找到,返回-1
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int n = sizeof(arr) / sizeof(arr[0]);
int key = 5;
int index = binarySearch(arr, n, key);
if (index != -1) {
cout << "找到了,下标是 " << index << endl;
} else {
cout << "没找到" << endl;
}
return 0;
}
```
该程序的核心是`binarySearch`函数,它接受一个整型数组、数组长度和要查找的关键字作为参数,返回关键字在数组中的下标。如果没找到,则返回-1。
在函数中,我们定义了`low`和`high`两个指针,分别指向数组的第一个和最后一个元素。然后,我们在一个循环中不断将数组的中间元素与要查找的关键字进行比较,如果相等则返回中间元素的下标,如果中间元素比关键字大,则继续在左半部分查找,否则在右半部分查找。如果最终没找到,则返回-1。
在`main`函数中,我们定义了一个有序数组,然后调用`binarySearch`函数查找关键字5在数组中的下标。如果找到了,则输出下标;否则输出"没找到"。
阅读全文