簡體   English   中英

為什么排序算法需要零秒

[英]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秒。

您不應該感到驚訝,對十個數字進行排序所需的時間不到一秒鍾。 多次重復排序以獲得有意義的時間。

我的計算機用完全相同的起始數組花費0.18秒運行一百萬次循環。 因此,每種排序大約需要180微秒。 這太好了,無法通過一對clock()調用進行測量。

您可以使用高分辨率計時器獲得更准確的時間測量。 請參閱http://www.songho.ca/misc/timer/timer.html 。您嘗試測量的時間在微秒范圍內!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM