//以下例中顺序查找算法为参考,在输出结果相同的情况下,编写出设置监视哨的顺序查找和折半查找。
时间: 2024-03-05 16:54:01 浏览: 42
设置监视哨的顺序查找算法如下:
```
int seqSearch(int arr[], int n, int key) {
int index = 0;
arr[n] = key; // 设置监视哨
while (arr[index] != key) {
index++;
}
return (index == n) ? -1 : index; // 找到监视哨时返回-1,否则返回找到的位置
}
```
折半查找算法如下:
```
int binarySearch(int arr[], int n, int key) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == key) {
return mid;
} else if (arr[mid] < key) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1; // 没有找到返回-1
}
```
两种算法都可以实现在有序数组中查找指定元素,但是监视哨的顺序查找算法在最坏情况下需要比较n+1次,而折半查找算法最坏情况下只需要比较log2(n)+1次,因此折半查找算法更加高效。
阅读全文