//顺序查找法
#include<stdio.h>
void order(int a[],int n,int x)
{
for(int i = 0; i < n; i++)
{
if(a[i] == x)
printf("have find %d in a at %d/n",x,i);
}
}
int main()
{
int const n = 9;
int find = 67;
int a[n] = {1,12,67,67,90,111,122,123};
order(a,n,find);
return 0;
}
=================================================================================
二分查找法
#include<stdio.h>
void middle(int a[],int n,int x)
{
int min = 0,max = n -1,mid;
int find = 0,i = 0,nameplate = 1,plate = 0;
while(min <= max && !find)
{
mid = (min+max)/2;
if (a[mid] < x)
{
min = mid + 1;
}
else if(a[mid] > x)
{
max = mid - 1;
}
else
{
printf("have find %d in a at %d/n!",x,mid);
i = mid;
find = 1;
while(!plate)
{
if(nameplate)
{
if(a[--i] == x)
{
printf("have find %d in a at %d/n!",x,i);
}
else
nameplate = 0;
}else
{
if(a[++mid] == x)
{
printf("have find %d in a at %d/n!",x,mid);
}else
plate = 1;
}
}
}
}
}
int main()
{
int const n = 9;
int find = 67;
int a[n] = {1,12,67,67,90,111,122,123};
middle(a,n,find);
return 0;
}