设计一个算法,输出在顺序表{1,2,3,4,5,6,7,8,9,10}中采用二分查找法查找关键字9的过程,并且写出完整程序、
时间: 2024-04-30 22:25:13 浏览: 91
二分查找法是一种高效的查找算法,它要求被查找的序列必须有序。
在顺序表中采用二分查找法查找关键字9的过程如下:
1. 确定查找区间的左右端点:初始时,区间的左端点为0,右端点为9。
2. 取区间的中间位置mid:mid=(left+right)/2=4。
3. 比较mid位置的元素与关键字9的大小。
a. 如果mid位置的元素等于9,则查找成功,输出其下标4。
b. 如果mid位置的元素大于9,则在左半部分继续查找,即右端点变为mid-1=3。
c. 如果mid位置的元素小于9,则在右半部分继续查找,即左端点变为mid+1=5。
4. 重复步骤2、3,直到查找成功或者区间为空。
下面是完整的程序实现:
```
#include<stdio.h>
int binary_search(int arr[], int n, int key)
{
int left = 0, right = n - 1, mid;
while (left <= right)
{
mid = (left + right) / 2;
if (arr[mid] == key) return mid;
if (arr[mid] < key) left = mid + 1;
else right = mid - 1;
}
return -1;
}
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 = binary_search(arr, n, key);
if (index == -1) printf("未找到关键字\n");
else printf("关键字在顺序表中的下标为:%d\n", index);
return 0;
}
```
输出结果为:关键字在顺序表中的下标为:8。