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

来源:互联网 发布:bae java 编辑:程序博客网 时间:2024/06/04 18:09

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;}

如果程序设计有错误或更简洁的方法,欢迎并感谢您指正出示,谢谢!

阅读全文
0 0
原创粉丝点击