用c语言实现数组二分法查找某个数
时间: 2023-06-05 18:05:06 浏览: 136
C语言程序设编写程序在数组中查找一个数要求 ⑴用顺序查找实现 ⑵用折半查找实现。 注:若有该数,则输出该数,否则输出“无此数”。
5星 · 资源好评率100%
好的,这是一个很好的问题。对于这个问题,我们可以使用一个二分搜索算法来查找一个有序数组中的特定元素。以下是一个 C 语言实现的示例代码:
```
#include <stdio.h>
// 用二分查找算法查找某个数
int binary_search(int arr[], int left, int right, int x)
{
// 如果左边大于右边,则停止查找
if (left > right)
return -1;
// 计算中间位置
int middle = (left + right) / 2;
// 如果找到了,返回索引
if (arr[middle] == x)
return middle;
// 如果中间值大于查找值,递归左子数组
else if (arr[middle] > x)
return binary_search(arr, left, middle - 1, x);
// 如果中间值小于查找值,递归右子数组
else
return binary_search(arr, middle + 1, right, x);
}
int main()
{
int arr[] = {1, 3, 4, 7, 9, 10, 11};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 7;
int result = binary_search(arr, 0, n - 1, x);
if (result == -1)
printf("找不到 %d \n", x);
else
printf("%d 在数组中的位置是 %d \n", x, result);
return 0;
}
```
希望这个代码可以帮助到您。如果您有任何更多的问题,都可以随时问我。
阅读全文