为什么排序算法耗时零秒

why sorting algorithm takes zero seconds

本文关键字:零秒 排序 算法 为什么      更新时间:2023-10-16

这里是算法

#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你试图测量的时间在微秒的范围内!