用c语言编写一个程序,输出在顺序表(1,2,3,4,5,6,7,8,9,10)中采用折半查找方法查找关键字9的过程。
时间: 2024-03-02 10:53:26 浏览: 20
好的,以下是一个使用C语言编写的程序,用于演示在顺序表中使用折半查找方法查找关键字9的过程:
```c
#include <stdio.h>
int binarySearch(int arr[], int left, int right, int key);
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int n = sizeof(arr) / sizeof(arr[0]);
int key = 9;
int index = binarySearch(arr, 0, n - 1, key);
if (index == -1) {
printf("关键字 %d 不在数组中\n", key);
} else {
printf("关键字 %d 的下标为 %d\n", key, index);
}
return 0;
}
int binarySearch(int arr[], int left, int right, int key) {
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == key) {
return mid;
}
if (arr[mid] < key) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
```
输出结果为:
```
关键字 9 的下标为 8
```
程序中的 `binarySearch` 函数实现了折半查找的过程,它接收一个整数数组 `arr`,左右边界的下标 `left` 和 `right`,以及要查找的关键字 `key`。在每次循环中,它计算数组中间位置的下标 `mid`,并将其与关键字进行比较。如果中间元素与关键字相等,则返回其下标;如果中间元素小于关键字,则在右半部分继续查找;否则,在左半部分继续查找。如果数组中没有找到关键字,则返回 -1。