Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么排序算法需要零秒_C++_Time - Fatal编程技术网

C++ 为什么排序算法需要零秒

C++ 为什么排序算法需要零秒,c++,time,C++,Time,这里是算法 #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++){

这里是算法

#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;
}
#包括
#包括
#包括
使用名称空间std;
int main(){
inta[10]={12,3,5,2,7,80,10,1,16,30};
长ts,te;
srand(::GetTickCount());
ts=时钟();
对于(int i=0;ii;j--){

如果(a[j]除非您使用穿孔卡片来编写程序,否则排序10个数字所需的时间少于一个刻度,您不应该感到惊讶。如果您想要更准确的代码配置文件,请使用毫秒,这会给您一个更好的主意

循环中最内部的指令运行100次——这与现在的低端处理器相比也算不了什么


编辑:我用100000个数字测试了代码,这是for循环中的10^10次迭代,只花了3秒钟。

除非您使用穿孔卡编写程序,否则排序10个数字所需的时间少于一个刻度不会让您感到惊讶。如果您想要更准确的代码配置文件,请使用毫秒,这应该会给您一个赌注好主意

循环中最内部的指令运行100次——这与现在的低端处理器相比也算不了什么


编辑:我用100000个数字测试了代码,这是for循环中的10^10次迭代,只花了3秒钟。

对10个数字进行排序所需时间少于时钟的一个滴答声,你不应该感到惊讶。重复排序多次以获得有意义的计时


我的计算机在完全相同的起始阵列上运行100万次循环需要0.18秒。因此,每次排序大约需要180微秒。这对于一对
时钟()来说太精细了
调用。

对十个数字进行排序所需时间少于时钟的一个滴答声,您不应感到惊讶。重复排序多次以获得有意义的计时


我的计算机使用完全相同的起始阵列运行100万次循环需要0.18秒。因此,每次排序大约需要180微秒。这对于使用一对
clock()
调用进行测量来说太精细了。

使用高分辨率计时器可以获得更精确的时间测量。 看见
您尝试在微秒范围内测量树叶的时间!

您可以使用高分辨率计时器获得更精确的时间测量。 看见
您尝试在微秒范围内测量树叶的时间!

请检查它是否返回
–1
。什么是clock()调用的分辨率?对10个数字进行排序最多需要几毫秒…您应该使用clock\t表示ts和te(可能很长,但仍然…)如果n很小,即使冒泡排序也很快。请检查它是否返回
–1
。什么是clock()调用的分辨率?对10个数字进行排序最多需要几毫秒…您应该使用clock\t进行ts和te排序(可能很长,但仍然…)即使是冒泡排序也很快如果n很小,对于现代计算机来说,即使是毫秒也太小,无法测量10个数字的排序。要么使用更大的样本,要么使用微秒计时器进行测量。@KerrekSB我想就是这样,clock()返回毫秒,但这不可能超过您指定的分辨率。对于现代计算机,即使毫秒也太小,无法测量10个数字的排序。请使用更大的样本或使用微秒计时器进行测量。@KerrekSB我想就是这样,clock()返回毫秒,但这不可能超过您指定的分辨率。但是您是否在排序之间对数组进行了置乱?@UncleBens:我执行了。测试使用完全相同的起始数组运行了1000000次。但是您是否在排序之间对数组进行置乱?@UncleBens:我执行了。测试使用完全相同的起始数组运行了1000000次正在启动数组。