二分查找
#include <stdio.h>
int halfsearch(int D[],int low,int high,int key);
int main()
{
int D[8]= {5,13,17,42,46,55,71,94};
int i,key;
printf("请输入key:");
scanf("%d",&key);
i = halfsearch(D,0,7,key);
printf("%d\n",i);
return 0;
}
int halfsearch(int D[],int low,int high,int key)
{
int mid = (low + high) / 2;
while(low <= high && D[mid] != key)
{
if(D[mid] < key)
{
low = mid + 1;
}
else
{
high = mid - 1;
}
mid = (low + high) / 2;
}
if(D[mid] == key)
{
return mid;
}
else
{
return -1;
}
}
递归实现
#include <stdio.h>
int halfsearch(int D[],int low,int high,int key);
int main()
{
int D[8]= {5,13,17,42,46,55,71,94};
int i,key;
printf("请输入key:");
scanf("%d",&key);
i = halfsearch(D,0,7,key);
printf("%d\n",i);
return 0;
}
int halfsearch(int D[],int low,int high,int key)
{
int mid = (low + high) / 2;
if(low > high) return -1;
else
{
if(D[mid] < key)
{
low = mid + 1;
return halfsearch(D,low,high,key);
}
else if(D[mid] > key)
{
high = mid - 1;
return halfsearch(D,low,high,key);
}
else
{
return mid;
}
}
}
顺序查找
#include <stdio.h>
int search(int D[],int n,int key);
int main()
{
int D[8]= {5,13,17,42,46,55,71,94};
int i,key;
printf("请输入key:");
scanf("%d",&key);
i = search(D,8,key);
printf("%d\n",i);
return 0;
}
int search(int D[],int n,int key)
{
int i,tag = -1;
for(i = 0;i < n && D[i] != key;i++);
if(D[i] == key)
{
tag = i;
}
return tag;
}