#include<stdio.h>
#define MaxSize 20
typedef struct
{
int key;
}RecordType;
typedef struct
{
int length;
RecordType r[MaxSize + 1];
}RecordList;
int BinSearch(RecordList l, int key)
{
int low = 1;
int high = l.length; //置区间初值
int mid;
while (low <= high)
{
mid = (low + high) / 2;
if (key == l.r[mid].key)
{
return mid; //如果要查找值key == l.r[mid].key返回mid下标
}
else if (key < l.r[mid].key)
{
high = mid - 1; //未找到,把high往mid前移一位在前半区间查找
}
else
{
low = mid + 1; //在后半区间查找
}
}
return 0;
}
int main()
{
RecordList L = { 10, 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100}; //初始化线性表
printf("%d\n", BinSearch(L, 30)); //查找30所在的下标
return 0;
}
结果

本文详细介绍了二分查找算法的实现过程,通过C语言代码展示了如何在一个有序的数组中查找特定元素的位置。代码中定义了RecordList结构体来存储线性表,并使用BinSearch函数进行查找,最后通过main函数调用并输出查找结果。
6337

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



