折半查找

来源:互联网 发布:alpha软件go下载 编辑:程序博客网 时间:2024/05/18 01:24
#include<stdio.h>#include<iostream>#include<algorithm>#define maxn 100using namespace std;typedef struct{int num[maxn];int length;}SSTable;int search(SSTable ST,int key){//在顺序表ST中顺序查找其关键字等于key的数据元素,若找到函数的值为该元素在表中的位置,否则为0。int low,high,mid;low=1;high=ST.length;//置查找区间初值 while(low<=high){mid=(low+high)/2;if(key==ST.num[mid]) return mid;//找到待查元素 else if(key<ST.num[mid]) high=mid-1;//继续在前一字表进行查找 else if(key>ST.num[mid]) low=mid+1;//继续在后一字表进行查找}return 0;//表中不存在待查元素 }int main(){int i,n,position;int key;SSTable ST;printf("输入元素的个数:");scanf("%d",&n);ST.length=n;//将n赋值给表长 printf("输入各个元素的值:");for(i=1;i<=n;i++){scanf("%d",&ST.num[i]);}sort(ST.num+1,ST.num+n+1);printf("输出排序后的个元素:");for(i=1;i<=n;i++){printf("%d ",ST.num[i]);}printf("\n");printf("输入要查找的元素:");scanf("%d",&key);position=search(ST,key);if(position)printf("要查找的元素的位置是:%d\n",position);else printf("查找失败\n");return 0;}

0 0
原创粉丝点击