二分查找是顺序查找中的一种,二分查找的前提是查找表中的数据必须是有序的。
#include <stdio.h>
#define MaxSize 10
typedef struct {
char key[MaxSize];
int length;
} SqList;
int Init(SqList *q){
q->length = MaxSize;
for(int i = 0; i < q->length; i++) scanf("%c", &q->key[i]);
return 0;
}
int Seach(SqList *q, char e){
int low, high, mid;
low = 0;
high = q->length-1;
while(low <= high){
mid = (low + high)/2;
if(q->key[mid] == e){
printf("you want screach '%c'in %d\n", e, mid+1);
return mid;
}
else if(q->key[mid] > e) high = mid - 1;
else low = mid + 1;
}
printf("sorry!!!");
return 0;
}
int main(void){
SqList q;
printf("begin init please input 10 number:\n");
Init(&q);
char e;
printf("init end!,please input you want search number:");
getchar();
e = getchar();
Seach(&q, e);
return 0;
}
【运行结果】