#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
int *elem;
int length;
} sqlist;
void initlist(sqlist *l)
{
l->elem=(int *)malloc(sizeof(int)*100010);
l->length=0;
}
void c(sqlist *l,int n)
{
int i;
for(i=1; i<=n; i++)
scanf("%d",&l->elem[i]);
l->length=n;
}
int find(sqlist l,int left,int right,int num) //不一样的二分查找。
{
while(left<=right)
{
int mid=(left+right)/2;
if(l.elem[mid]<num)
left=mid+1;//从右半部分查找
else if (l.elem[mid]>num)
right=mid-1;//从左半部分查找
else
return mid;//找到就成功返回;
}
return 0;//说明未找到
}
int main()
{
int n,t,x;
sqlist l;
scanf("%d",&n);
initlist(&l);
c(&l,n);
scanf("%d",&t);
while(t--)
{
scanf("%d",&x);
int f=find(l,1,n,x);
if(!f) printf("No Found!\n");
else printf("%d\n",f);
}
return 0;
}
顺序表应用6:有序顺序表查询
最新推荐文章于 2022-03-04 23:10:05 发布