算法流程:
对一个从小到大的序列来说。。。。。。。。。。。。
1.置查找范围初态:low=1,high=n;
2.对当前的查找范围进行以下处理
2.1求中项mid=(low+high)/2
2.2将指定值k与中项的关键字值进行比较,如果等于则返回中项序号mid;若mid<k,则low=mid+1,反之high=mid-1;
2.3重复2.2直至查找到返回mid或者当low>high时候返回0
#include<stdio.h>
#include<stdlib.h>typedef int Datatype;
struct Rec
{
Datatype key;
};
Rec r[] = { 0,5,13,19,21,37,56,64,75,80,88,92};//记住第一个r[0]的值一定要放入0;Rec r[n+1].r中内容为n+1,这是因为把第0个值里放入了一个0.
//假如有序表示从小到大来表示的
int bisrch(Rec r[], int n, Datatype k)
{
int low, high, mid;
low = 1;
high = n;