折半排序 循环&递归 时间性能测试
2018-01-01 15:36
302 查看
#include <stdio.h> #include <time.h> #define COMPARE(x, y) (((x) <(y)) ?-1:((x)==(y))? 0:1) #define MAX_SIZE 1000000 typedef struct { double duration; long repetitions; }times; int binsearch_f(int list[],int searchnum, int left, int right); int binsearch_r(int list[],int searchnum, int left, int right); void timer (int(*binsearch)(int list[],int searchnum, int left, int right) , int list[],int searchnum, int left, int right, times *x); int main(void) { static int list[MAX_SIZE]; times F,R; printf("function repetitions time"); for(int n=200000; n<=MAX_SIZE; n+=200000) { for(int i=0; i<n; i++) list[i]=i+1; // for(int k=0; k<n; k++) // printf("%d ", list[k]); // printf("\n"); timer(binsearch_f, list, 25, 0, n,&F); timer(binsearch_r, list, 25, 0, n,&R); printf("\nF: array_size:%3d %d %6.15lf " , n, F.repetitions, F.duration); printf("\nR: array_size:%3d %d %6.15lf \n" , n, R.repetitions, R.duration); } return 0; } int binsearch_f (int list[],int searchnum, int left, int right) { int middle; while(left <=right) { middle=(left+right)/2; switch(COMPARE(list[middle], searchnum)) { case -1: left=middle+1; break; case 0: return middle; case 1: right=middle-1; } } return -1; } int binsearch_r (int list[],int searchnum, int left, int right) { int middle; if(left <= right) { middle = (left+right)/2; switch(COMPARE(list[middle], searchnum)) { case -1: return binsearch_r (list, searchnum, middle+1, right); case 0: return middle; case 1: return binsearch_r (list, searchnum, left, middle-1); } } return -1; } void timer (int(*binsearch)(int list[],int searchnum, int left, int right) , int list[],int searchnum, int left, int right, times *x) { x->repetitions=0; clock_t start=clock(); do{ x->repetitions++; binsearch(list, searchnum, left, right); }while(clock()-start<1000); x->duration=(double)(clock()-start/(CLOCKS_PER_SEC)); x->duration/=x->repetitions; }
相关文章推荐
- Stopwatch 例子性能测试- 测试代码执行的时间
- 性能测试:响应时间/并发用户数/吞吐量/思考时间的计算
- 查看sql语句执行时间/测试sql语句性能
- 排列搜索 庞果网(C语言版,虽实现了,但未通过测试,时间超过3s,使用的是全排序方法,愿大神指导)
- 为什么要在性能测试中设置考虑时间
- (C# 版描述)选择排序算法以及排序时间的测试 --数据结构
- 基于spark排序的一种更廉价的实现方案-附基于spark的性能测试
- 6种排序的时间测试代码
- 【Android测试】【第二节】性能——CPU时间片
- Jmeter性能测试中Tps图与响应时间图
- 查看sql语句执行时间/测试sql语句性能
- List<T>在排序上的性能测试
- 使用console进行 性能测试 和 计算代码运行时间(转载)
- java实现冒泡排序,选择排序,插入排序,快速排序(简洁版)及性能测试
- 插入排序,归并排序,快速排序时间效率测试
- 性能测试进行的时间
- (C# 版描述)插入排序算法以及排序时间的测试 ---数据结构
- 基于spark排序的一种更廉价的实现方案-附基于spark的性能测试
- Loadrunner做性能测试:为什么100个用户的响应时间反而比50个用户的响应时间更短?
- 性能测试--运行时间设置和迭代次数区别