主要学习哨兵查找法并熟练使用!
一、look代码(重点看函数调用中的哨兵查找法)
#include<stdio.h>
#define NUMBER 5 /*元素个数*/
#define FAILED -1 /*查找失败*/
int search(const int v[], int key, int n)
{ /*查找元素数为n的数组v中与key一致的元素*/
int i = 0;
while (1) {
if (i == n)
return FAILED; /*查找失败*/
if (v[i] == key)
return i; /*查找成功*/
i++;
}
}
int main(void)
{
int i, ky, idx;
int vx[NUMBER];
for (i = 0; i < NUMBER; i++) {
printf("vx[%d]:", i);
scanf("%d", &vx[i]);
}
printf("要查找的值:");
scanf("%d", &ky);
idx = search(vx, ky, NUMBER); /*从元素个数为NUMBER的数组vx中查找ky*/
if (idx == FAILED)
puts("\a查找失败。");
else
printf("%d是数组的第%d号元素。\n", ky, idx + 1);
return 0;
}
/*像这样,从数组的开头出发顺次搜索,找出与目标相同的元素的一系列操作,称为线性查找(linear search)或顺序查找(sequential search))*/
二、运行结果示例
![](https://i-blog.csdnimg.cn/blog_migrate/03eaeddf63133f029abec363f96980d0.png)