帮我看一下这段代码的错误 private int BinSearch(int array[],int key) int mid, location, low, high; low=0; location=0; high= array. Length - 1; while (low <=high) { mid=(low + high)/2; if (key ==array(mid]){ location=mid; low=high+1;} else if (key < array[mid]) high=mid- I; else low =mid + 1; } return location; }
时间: 2023-05-22 08:01:10 浏览: 76
这段代码的错误在于缺少了方法体的大括号,应该是这样的:
private int BinSearch(int array[],int key) {
int mid, location, low, high;
low=0;
location=0;
high= array.length - 1;
while (low <=high) {
mid=(low + high)/2;
if (key ==array[mid]){
location=mid;
low=high + 1;
} else if (key < array[mid]) {
high=mid-1;
} else {
low =mid + 1;
}
}
return location;
}
相关问题
编写折半查找算法。 int BinSearch(STable ST, KeyType key)
好的,以下是折半查找算法的代码实现:
```
typedef struct {
KeyType key;
// 其他数据项
} ElemType;
typedef struct {
ElemType *elem;
int length;
} STable;
int BinSearch(STable ST, KeyType key) {
int low = 1, high = ST.length;
while (low <= high) {
int mid = (low + high) / 2;
if (ST.elem[mid].key == key) {
return mid; // 查找成功
} else if (ST.elem[mid].key > key) {
high = mid - 1; // 在左半部分查找
} else {
low = mid + 1; // 在右半部分查找
}
}
return 0; // 查找失败
}
```
其中,`STable` 为顺序表数据结构,`ElemType` 为数据元素类型,包含 `key` 和其他数据项。`BinSearch` 函数接收一个 `STable` 类型的顺序表和一个 `KeyType` 类型的关键字 `key`,返回查找到的元素下标,未找到返回0。具体实现是利用折半思想,每次将查找区间缩小一半,直到找到目标元素或者查找区间为空。在每次缩小区间时,判断目标元素是否在左半部分或者右半部分,以此来缩小查找区间。
void binsearch(int *r,int n) { /*折半查找函数*/ }补充一下这个算法
好的,这里给出一个使用指针实现的折半查找算法的示例代码:
```
int binsearch(int *r, int n, int key) {
int low = 0, high = n - 1, mid;
while (low <= high) {
mid = (low + high) / 2;
if (r[mid] == key) {
return mid;
} else if (r[mid] > key) {
high = mid - 1;
} else {
low = mid + 1;
}
}
return -1;
}
```
这里的参数r是一个指向整型数组的指针,n是数组的长度,key是要查找的关键字。在函数内部,我们通过指针操作来访问数组的值,折半查找的核心思想是不断缩小查找范围,直到找到目标元素或者查找范围为空。