int BinarySearch(SqList L, DataType x) { /* L为静态查找表,x为待查找的数据元素 */ int low = 0, upper = L.length - 1, mid; while ( low <= upper ) { mid= ; if ( L.items[mid] == x ) return ; if ( L.items[mid] < x ) ; else ; } return -1; }
时间: 2023-12-11 11:04:50 浏览: 43
以下是完整的二分查找代码:
```c++
#include <iostream>
using namespace std;
#define MAXSIZE 100
typedef struct {
int items[MAXSIZE];
int length;
} SqList;
int BinarySearch(SqList L, int x) {
int low = 0, upper = L.length - 1, mid;
while (low <= upper) {
mid = low + (upper - low) / 2;
if (L.items[mid] == x)
return mid;
if (L.items[mid] < x)
low = mid + 1;
else
upper = mid - 1;
}
return -1;
}
int main() {
SqList L = {{2, 3, 4, 10, 40}, 5};
int x = 10;
int result = BinarySearch(L, x);
(result == -1) ? cout << "Element is not present in array"
: cout << "Element is present at index " << result;
return 0;
}
```
在此代码中,我们首先定义了一个结构体 `SqList`,它包含一个整型数组 `items` 和数组的长度 `length`。然后,我们实现了一个名为 `BinarySearch` 的函数,它接受一个 `SqList` 类型的静态查找表 `L` 和要查找的数据元素 `x`。函数使用了变量 `low` 和 `upper` 来表示查找范围的左右边界,然后在一个 while 循环中进行查找。在每次循环中,我们首先计算出中间位置 `mid`,然后比较 `L.items[mid]` 和 `x` 的大小。如果相等,则返回中间位置 `mid`。如果 `L.items[mid]` 小于 `x`,则说明要查找的元素在右边,我们将左边界 `low` 更新为 `mid+1`。否则,要查找的元素在左边,我们将右边界 `upper` 更新为 `mid-1`。如果最终找不到要查找的元素,则返回 -1。在 `main` 函数中,我们使用上述函数在给定的静态查找表中查找元素 10,并输出结果。