如何使用chrono来查看我的排序算法每次迭代需要多长时间



我必须运行程序一定的次数,并希望确定每次迭代完成所需的时间。我把它改成了一个较小的值来查看结果,但它显示了

0.002056
0.001183
0.000613
0.000922
0.000731

我有点不确定结果是否应该是这样的,因为它的开始大于结果的结束。这些结果看起来准确吗?还是我把计时器打到了一个奇怪的位置?

if (sorting_type == 1) {
for (int i = 0; i < 5; i++) {
auto timer1 = chrono::high_resolution_clock::now();
A->BubbleSort();
auto timer2 = chrono::high_resolution_clock::now();
chrono::duration<double, milli> duration_ms = timer2 - timer1;
cout << duration_ms.count() << endl;

}  
}

您正在重复对同一组数据进行排序。这导致Bubble Sort在第一次迭代后花费的时间更少。如果你的数据以前是这样的:

[6,2,8,1]

这些步骤必须在第一次迭代中发生:

<->
[2,6,8,1]
<->
[2,6,8,1]
<->
[2,6,1,8]
<->
[2,6,1,8]
<->
[2,1,6,8]
<->
[2,1,6,8]
<->
[1,2,6,8]
<->
[1,2,6,8]
<->
[1,2,6,8]
<->
[1,2,6,8]
<->
[1,2,6,8]
<->
[1,2,6,8]

其他迭代都是这样的:

<->
[1,2,6,8]
<->
[1,2,6,8]
<->
[1,2,6,8]

最新更新