#include<stdio.h>
#include<stdlib.h>
typedef struct{
char elem[50];
int length;
}SSTable;
int Search_Bin(SSTable ST,char key){/*在有序表ST中折半查找其关键字等于key的数据元素
若找到返回该元素在表中的位置,否则为0*/
int low=1,high=ST.length,mid;
while(low<high){
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;//顺序表中不存在待查元素
}
int main(){
SSTable ST;
ST.length =0;
for(int i=1;i<=25;i++)
{ST.elem [i]=i+64;ST.length++;}
printf("请输入你要查找的关键字A-Z:");
int key,q;
scanf("%c",&key);
q=Search_Bin(ST,key);
printf("其在顺序表中的位置(为0时不在顺序表中):%d\n",q);
return(q);
}
折半查找
最新推荐文章于 2024-05-22 17:17:10 发布