- 论坛徽章:
- 1
|
本帖最后由 _HellAngel_ 于 2012-11-11 14:21 编辑
例题中给出的简单二分法函数是这个:- int binsearch(int x, int v[], int n)
- {
- int low, high, mid;
-
- low = 0;
- high = n-1;
- while (low <= high){
- mid = (low+high) / 2;
- if(x < v[mid])
- high = mid - 1;
- else if(x > v[mid])
- low = mid + 1;
- else
- return mid;
- }
- return -1;
- }
复制代码 然后有一个题目,说是让我简化一下这个函数,让它在循环里面只进行一次测试(原本的例题里进行了两次测试),让更多的测试在循环外进行。然后让我比较两个版本函数运行的时间。
我看了下答案,答案给出的是这个:- 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]){
- if(x < v[mid])
- high = mid - 1;
- else
- low = mid + 1;
- mid = (low + high) / 2;
- }
- if(x == v[mid])
- return mid;
- else
- return -1;
- }
复制代码 解答说,两种方案的执行时间几乎没有什么差异。
我想请教各位大神的问题是:
1、因为它只是个函数,我想知道如何能看出它的执行时间。
2、有没有更简单的方法,真的可以让执行时间变短。
谢谢各位大神看完小弟的帖子。 |
|