算法1:顺序查找
功能:在数组a中查找指定的数据key是否存在
参数:a是数组; n是数组a的个数; key是被查找的关键词
返回值:查找成功,返回key所在下标;不成功,返回-1。
//顺序查找
int find_seq(int a[], int n, int key)
{
int i;
for(i = 0; i < n; i++)
if(key == a[i])
return i;
return -1;
}
算法2:二分查找
low 下界 ; high 上界; mid = (low + high) / 2 不进位取整
k = a[mid] : 查找成功,返回mid
k < a[mid] : high = mid - 1 继续
k > a[mid] : low = mid + 1继续
low > high : 查找不成功
//二分查找
int find_bin(int a[], int n, int key) //key表示需要查找的数
{
int low = 0, high = n-1, mid; //初始化low是0, high是n-1
while(low <= high)
{
mid = (high + low) / 2;
if(key == a[mid])
return mid;
if(key < a[mid])
high = mid - 1;
else
low = mid + 1;
}
return -1;
}
主函数
int main()
{
int f;
int a[10] = {15,26,37,45,48,52,60,66,73,90};
f = find_bin(a, 10, 37);
if(f != -1)
printf("查找成功,下标为 %d\n", f);
else
printf("查找失败!");
return 0;
}