二分查找是顺序查找中的一种,二分查找的前提是查找表中的数据必须是有序的。
#include#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 %dn", 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; }
【运行结果】
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)