教材中说for循环中使用“监视哨”可以减少一半计算时间,可我代码中实践的结果却达不到这种效果,为什么?

SEO污染者CSNeN 2017-04-06 03:33:53
理论上想也是这样啊,但是经过我实际测试,在C语言中只减少了大概20%的时间,不知道是我写的代码或者环境错了,还是C语言本身的特性,导致这样,求指点。

运行结果:

这是我的代码:
#include<stdio.h>
#include<time.h>
#define MAX_SIZE 1000001
int main(void){
int arr[MAX_SIZE];
for(int i=1;i<MAX_SIZE+1;i++){
arr[i]=i;
}

int temp=1;
clock_t start,end;

start=clock();
for(int i=MAX_SIZE-1;i>0;i--){
if(temp==arr[i]){
break;
}
}
end=clock();

printf("未设置监视哨,用时:%ld\n",end-start);


start=clock();
arr[0]=temp;
for(int i=MAX_SIZE-1;temp!=arr[i];i--);
end=clock();

printf("设置监视哨,用时:%ld\n",end-start);
}
...全文
218 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
棒子先生 2017-04-25
  • 打赏
  • 举报
回复
你反汇编看一下就是了
SEO污染者CSNeN 2017-04-07
  • 打赏
  • 举报
回复
怎么没人啊。。。

33,007

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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