直接遍历
代码实现:
#include<stdio.h>
int main(){
int buf[200];
int n;
while (scanf("%d",&n)!=EOF)
{
for (int i = 0; i < n; i++)
{
scanf("%d", &buf[i]);
}
int x, ans = -1;
scanf("%d", &x);
for (int i = 0; i < n; i++)
{
if (buf[i] == x){
ans = i;
break;
}
}
printf("%d\n", ans);
}
return 0;
}
二分查找
实现代码:
#include<stdio.h>
#include<algorithm>
using namespace std;
struct Student
{
char no[100];
char name[100];
int age;
char sex[5];
bool operator < (const Student & A)const{
return strcmp(no, A.no) < 0;
}
}buf[1000];
int main(){
int n;
while (scanf("%d",&n)!=EOF)
{
for (int i = 0; i < n; i++)
{
scanf("%s%s%s%d", buf[i].no, buf[i].name, buf[i].sex, &buf[i].age);
}
sort(buf, buf + n);
int t;
scanf("%d", &t);
while (t--!=0)
{
int ans = -1;
char x[30];
scanf("%s", x);
int top = n - 1, base = 0;
while (top>=base)
{
int mid = (top + base) / 2;
int tmp = strcmp(buf[mid].no, x);
if (tmp==0)
{
ans = mid;
break;
}
else if (tmp>0)
{
top = mid - 1;
}
else
{
base = mid + 1;
}
}
if (ans==-1)
{
printf("No Answer!\n");
}
else
{
printf("%s %s %s %d\n", buf[ans].no, buf[ans].name, buf[ans].sex, buf[ans].age);
}
}
}
return 0;
}