为什么排序算法耗时零秒
why sorting algorithm takes zero seconds
这里是算法
#include<iostream>
#include<Windows.h>
#include<time.h>
using namespace std;
int main(){
int a[10]={12,3,5,2,7,80,10,1,16,30};
long ts,te;
srand(::GetTickCount());
ts=clock();
for (int i=0;i<10;i++){
for (int j=9;j>i;j--){
if (a[j]<a[j-1]){
int t=a[j];a[j]=a[j-1];a[j-1]=t;
}
}
}
te=clock();
cout<<" time elapsed "<<te-ts<<endl;
return 0;
}
,但我很惊讶,因为它给我零作为输出,我正在测量从代码开始到完成所经过的时间,为什么?我的计算机不是所谓的超级计算机,这段代码片段有什么问题?
除非您使用打孔卡来编写程序,否则您不应该对排序10个数字所需的时间少于一个刻度感到惊讶。如果你想要一个更准确的代码概要,使用毫秒,这会给你一个更好的想法。
循环中最内部的指令运行100次——这与现在的低端处理器相比根本不算什么。
编辑:我用100000个数字测试了代码,这是for循环中的10^10次迭代,它只花了3秒。您应该不会感到惊讶,排序十个数字只需要不到一个时钟的滴答声。重复多次排序以获得有意义的计时。
我的计算机用相同的起始数组运行100万次循环需要0.18秒。因此,每次排序大约需要180微秒。这太精细了,无法用一对clock()
调用来测量。
您可以使用高分辨率计时器获得更准确的时间测量。参见http://www.songho.ca/misc/timer/timer.html你试图测量的时间在微秒的范围内!
相关文章:
- 当回溯以零开始时,如何调试崩溃
- 二叉排序树无法编译
- 在没有太多条件句的情况下,我如何避免被零除
- 仅使用绝对值对数组进行排序,并在C++中显示实际值
- OpenInventor从9.8升级到10.4.2后,GLSL纹理返回零
- C++选择排序算法中的逻辑错误
- 使用C++程序合并排序没有得到正确的输出
- 如果我将索引变量更改为零,并且合并函数中的k = 0,则获得合并排序的错误结果
- 如何在将秒转换为分钟且余数小于 10 秒时包含前导零
- 如何在快速排序算法中使已排序数组的交换次数为零
- 计算每秒添加到队列中添加的请求数 - 始终返回为零
- C 排序升序非零值
- 对无零值的多维向量进行排序
- 如果第一个相同,则通过按秒排序插入 STL 对集
- C++,根据秒迭代对地图内容进行排序
- 为什么一位数组返回零?合并排序测试
- 当算法花费零秒/毫秒时间时,如何获取近似时间
- 有符号零和无符号零 c++ 之间的排序
- 递归归并排序传递指向零的指针
- 为什么排序算法耗时零秒