有序表上的查找(二分查找法)

来源:互联网 发布:淘宝怎么设置好友来访 编辑:程序博客网 时间:2024/05/17 05:11
/*有序表上的查找(二分查找法)*/#include<stdio.h>#define Maxsize 10typedef int KeyType;typedef struct{    int elem[Maxsize];    int n;              /*最后一个数据元素的下标*/}SqTable;void Create(SqTable *st){   int i;   printf("输入一个含有9个数据元素的有序表:");   for(i=1;i<=9;i++)       scanf("%d",&st->elem[i]);   st->n=i;}int Search(SqTable *st,KeyType key){   int low,high,mid;   low=1;               /*置查找区间初值*/   high=st->n;   while(low<=high)   {                    /*区间长度不为0时继续查找*/      mid=(low+high)/2; /*对区间进行折半*/      if(key==st->elem[mid])        return mid;      else if(key<st->elem[mid])        high=mid-1;     /*在前半区间查找*/      else low=mid+1;   /*在后半区间查找*/   }   return 0;            /*查找不成功,则返回0*/}main(){    int key,x;    SqTable st;    Create(&st);    printf("输入查找的key值:");    scanf("%d",&key);    x=Search(&st,key);    if(x==0)        printf("查找失败!\n");    else        printf("%d,%d\n",x,st.elem[x]);}

编译效果
这里写图片描述

原创粉丝点击