您的位置:首页 > 其它

练习 3-1 在上面有关折半查找的例子中,while循环语句内共执行了两次测试,其实只要一次就足够(代价是将更多的测试在循环外执行)。重写该函数,使得在循环内部只执行一次测试。

2017-07-24 11:43 1126 查看

C语言程序设计(第二版) 练习3-1 个人设计

练习 3-1 在上面有关折半查找的例子中,while循环语句内共执行了两次测试,其实只要一次就足够(代价是将更多的测试在循环外执行)。重写该函数,使得在循环内部只执行一次测试。

代码块

#include <stdio.h>

int binsearch(int x, int v[], int n);

main()
{
int x = 3;
int v[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int n = 10;
int a;

a = binsearch(x, v, n);
printf("%d\n", a);

return 0;
}

int binsearch(int x, int v[], int n)
{
int low, high, mid;

low = 0;
high = n - 1;
mid = (low + high) / 2;
while((low <= high) && (x != v[mid])){
(x < v[mid]) ? high = mid + 1 : low = mid + 1;
mid = (low + high) / 2;
}
if (x == v[mid])
return mid;
else
return -1;
}


如果程序设计有错误或更简洁的方法,欢迎并感谢您指正出示,谢谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐