C语言二分查找算法实现:查找有序数组中的指定数值
#include <stdio.h>
int binarySearch(int arr[], int x, int low, int high) {
while (low <= high) {
int mid = (low + high) / 2;
if (arr[mid] == x) {
return mid;
}
else if (arr[mid] < x) {
low = mid + 1;
}
else {
high = mid - 1;
}
}
return -1;
}
int main() {
int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int x;
scanf('%d', &x);
int index = binarySearch(arr, x, 0, 9);
if (index != -1) {
printf('Index is %d
', index);
} else {
printf('Not Found
');
}
return 0;
}
代码说明:
binarySearch函数: 该函数实现二分查找算法,接收有序数组arr、待查找数值x、数组起始索引low和结束索引high作为参数。while循环: 循环条件为low <= high,表示待查找范围不为空。mid计算: 计算当前查找范围的中点索引mid。- 比较
arr[mid]和x:- 如果
arr[mid]等于x,则找到了x,返回mid。 - 如果
arr[mid]小于x,则x在mid右侧,更新low为mid + 1。 - 如果
arr[mid]大于x,则x在mid左侧,更新high为mid - 1。
- 如果
- 返回 -1: 如果循环结束仍未找到
x,则返回 -1,表示未找到。
main 函数:
- 初始化数组
arr。 - 从用户输入待查找数值
x。 - 调用
binarySearch函数查找x在数组中的位置,并将结果存储在index中。 - 根据
index的值判断是否找到x,并输出相应的结果。
使用方法:
- 编译并运行代码。
- 输入一个整数
x,程序会查找x在数组中的位置。 - 如果找到
x,程序会输出x的索引。 - 如果没有找到
x,程序会输出 'Not Found'。
原文地址: https://www.cveoy.top/t/topic/pfu1 著作权归作者所有。请勿转载和采集!