zoukankan      html  css  js  c++  java
  • 折半排序 循环&递归 时间性能测试

    #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("
    ");
    
    		timer(binsearch_f, list, 25, 0, n,&F);
    		timer(binsearch_r, list, 25, 0, n,&R);
    
    		
    		printf("
    F: array_size:%3d  %d   %6.15lf "
    				, n, F.repetitions, F.duration);
    		printf("
    R: array_size:%3d  %d   %6.15lf 
    "
    				, 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;
    }
    

  • 相关阅读:
    nodejs安装
    Python基本知识3----序列
    jdk环境变量配置
    sublime text3插件的安装
    QTP基本方法4------手动写入信息到测试结果报告中
    QTP基本方法3-----截屏
    QTP基本方法2------截取字符串
    QTP基本方法
    python文件操作指令
    XSStrike工具的安装使用
  • 原文地址:https://www.cnblogs.com/WALLACE-S-BOOK/p/9732305.html
Copyright © 2011-2022 走看看