1.折半查找:
#include<string.h> // 需要引用的头文件
int search (int a[],int x) // 数组a[] 要查找的数字 x
{
int low,mid,high,n;
n=strlen(a);
low=0;
high=n-1;
while (low<=high)
{
mid=(low+high)/2;
if (a[mid]==x)
return mid+1;
else if (a[mid]>x)
high=mid-1;
else low=mid+1;
}
return -1;
}
2.顺序查找:
#include<string.h>
int search (int a[],int x)
{
int i,f=-1,n;
n=strlen(a);
for (i=0;i<a;i++) // 逐步判断
if (x==a[i])
{
f=i+1;
break;
}
return (f);
}
3.分块查找
int k;
k=search(a[],a);
struct index{
int key;
int end;
int start;
} index[4];
int j=-1;
for (int i=0;i<3;i++)
{
index[i].start=j+1;
j+=1;
index[i].end=j+4;
j+=4;
index[i].key=a[j];
}
int search (int a[],int key)
{
int i,j;
i=0;
while (i<3&&key>index[i].key)
i++;
if (i>=3)
return -1;
j=index[i].start;
while (j<index[i].end&&a[j]!=key)
j++;
if (j>index[i].end)
j=-1;
return j;
}