练习3-1 重写binsearch函数,使得在循环内部只执行一次测试,比较两种版本函数的运行时间
来源:互联网 发布:数据挖掘 招聘 银行 编辑:程序博客网 时间:2024/05/16 00:53
尝试使用大数组比较运行时间,发现数组大小为521153时没有问题,数组大小为521154时出错。
#include <stdio.h>main(){ int i,x; int v[521153]; int n=521153; x=3; for(i=0;i<521153;++i) v[i]=i;}
“局部非静态的数组,空间在程序的栈上分配,不同平台的栈大小不同:SunOS/Solaris是8M,Linux是10M,Windows是1M,AIX是64M,都是可以调整的。大数组,建议在堆上分配。”
方法1:
#include <stdio.h>int binsearch(int x,int v[],int n);main(){ int i,x; int v[100000]; int n=100000; x=3; for(i=0;i<100000;++i) v[i]=i; binsearch(x,v,n);}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;}
方法2:
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(v[mid]==x) return mid; else return -1;}
运行时间几乎没有差异(数量级一样)。跟x大小有关,x较小时方法1测试较少,查找时间短。
0 0
- 练习3-1 重写binsearch函数,使得在循环内部只执行一次测试,比较两种版本函数的运行时间
- 练习3-1 在上面有关折半查找函数中,while循环语句内共执行了两次测试,其实只要一次就足够(代价是将更多的测试在循环外执行)。重写该函数,使得在循环内部只执行一次测试。比较两种版本函数的运行时间。
- 练习 3-1 在上面有关折半查找的例子中,while循环语句内共执行了两次测试,其实只要一次就足够(代价是将更多的测试在循环外执行)。重写该函数,使得在循环内部只执行一次测试。
- 练习 3-1 在上面有关折半查找的例子中,while循环语句内共执行了两次测试,其实只要一次就足够(代价是将更多的测试在循环外执行)。重写该函数,使得在循环内部只执行一次测试。
- 函数只运行一次
- binsearch 函数的解释说明。
- 96-只被执行一次的函数
- 函数内部的静态变量只会调用一次
- 【学习收藏】如何创建只执行一次的工具函数
- 测试函数运行时间
- 测试函数运行时间
- JS函数表达式 只运行一次
- 获取函数运行时间的两种方法
- 一个测试运行时间的函数
- VC程序运行时间的测试函数
- VC程序运行时间的测试函数
- 如何测试一个函数的运行时间
- setTimeout只运行一次 setinterval是循环运行的
- redis学习笔记——主从同步(复制)
- 人脸检测 JDA
- GridView加载刷新连带单独的图片用(ScrollView和GridView)解决冲突
- 使用 VisualVM 进行java程序性能分析及调优
- 老题:猜数游戏
- 练习3-1 重写binsearch函数,使得在循环内部只执行一次测试,比较两种版本函数的运行时间
- POJ 2187 Beauty Contest
- objective-C 编程全解-第08章 类NSObject和运行时系统 中 下
- SQLHelper
- tomcat https访问设置
- 小萝莉说Crash(二): Unrecognized selector xxx 之 ForwardInvocation
- 第15周实践项目项目2——洗牌
- curl 读取cookie并进行测试
- OKhttp使用笔记