顺序搜索法

lynjimmy 2010-09-16 05:04:33
#include<iostream.h>
#include<time.h>
int seqsearch(int a[],const int n,const int x)
{
for(int i=0;i<n;i++)
if(a[i]==x)break;
if(i==n)return -1;
else return i;
}
void TimSearch()
{
int a[1001],n;long start,stop;
for(int j=0;j<=1000;j++)a[j]=j+1; //初始化a
cin>>n; //输入n
time(&start); //计时开始
int k=seqsearch(a,n,0); //不成功查找
time(&stop); //停止计时
long runTime=stop-start; //计算运行时间
cout<<" "<<n<<" "<<runTime<<endl; //输出
}
int main()
{
cout<<"顺序搜索法...\n";
TimSearch();
return 1;
}


怎么运行时间一直为 0?
...全文
191 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cswuyg 2010-09-16
  • 打赏
  • 举报
回复
时间是微秒级别的。time做不到。可以用QueryPerformanceFrequency、QueryPerformanceCounter。精度跟CPU主频相关,比较高,微秒以下。
#include <iostream.h>
#include <windows.h>
///////////////////////////////////////////////////////////////////////////
int seqsearch(int a[],const int n,const int x)
{
int i;
for(i = 0; i != n; ++i)
if(a[i] == x)
break;
if(i == n)
return -1;
else return i;
}
///////////////////////////////////////////////////////////////////////////
void TimSearch()
{
int a[1001], n;
for(int j = 0; j <= 1000; j++)
a[j] = j + 1; //初始化a
cin >> n; //输入n
/////////////////////////////////////////////计时测试/////////
_LARGE_INTEGER time_start; /*开始时间*/
_LARGE_INTEGER time_over; /*结束时间*/
_LARGE_INTEGER dqFreq; /*计时器频率*/
_LARGE_INTEGER f; /*计时器频率*/
QueryPerformanceFrequency(&f);
dqFreq.QuadPart = f.QuadPart;
QueryPerformanceCounter(&time_start);
int k = seqsearch(a, n, 0); //不成功查找
QueryPerformanceCounter(&time_over);
cout << n << " " << ((time_over.QuadPart-time_start.QuadPart)/(double)(dqFreq.QuadPart)) << "s" << endl;
////////////////////////////////////////////计时测试//////////
}
///////////////////////////////////////////////////////////////////////////
int main()
{
cout << "顺序搜索法..." << endl;
TimSearch();
return 1;
}
/*
测试结果:
顺序搜索法...
900
900 6.4254e-006s
*/
dingshaofengbinbin 2010-09-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 freezezdj 的回复:]
time() 精确到秒。
int k=seqsearch(a,n,0); //不成功查找
你这个函数在现在的电脑上怎么也用不了1秒。
当然为0了。
[/Quote]
正解!!!
乐CC 2010-09-16
  • 打赏
  • 举报
回复
用clock()吧
luciferisnotsatan 2010-09-16
  • 打赏
  • 举报
回复
把数据加大1000肯定太小
lynjimmy 2010-09-16
  • 打赏
  • 举报
回复
怎样修改才能让他显示出来
冻结 2010-09-16
  • 打赏
  • 举报
回复
time() 精确到秒。
int k=seqsearch(a,n,0); //不成功查找
你这个函数在现在的电脑上怎么也用不了1秒。
当然为0了。

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧