#include <stdio.h>
int binary_search(const int arr[],int low, int high,int key);
int main(int argc, char **argv)
{
int arr[] = {4,8,20,30,50,60};
int len = sizeof(arr) / sizeof *arr; // 求数组长度
int key;
printf("请输入一个数字:");
scanf("%d",&key);
printf("\n");
int low = 0;
int high = len - 1;
int pos = binary_search(arr,low,high,key);
printf ("pos = %d\n",pos);
return 0;
}
int binary_search(const int arr[],int low, int high,int key)
{
int mind = low + (high - low)/2; // 记录中间 角标
while (low <= high) {
if (key == arr[mind]) {
return mind;
}
else if(key > arr[mind]){
low = mind + 1;
mind = low + (high - low)/2;
}
else if(key < arr[mind]){
high = mind - 1;
mind = low + (high - low)/2;
}
if(low>high){
return -1;
}
}
return -1;
}
本文介绍了一个简单的二分查找算法实现过程,通过C语言代码展示了如何在一个有序数组中搜索特定元素的位置。用户可以输入待查找的数字,程序将返回该数字在数组中的位置或未找到的提示。
178

被折叠的 条评论
为什么被折叠?



