【问题标题】:Calculating time taken in milliseconds for a sorting algorithm sorting an integer array计算排序算法对整数数组进行排序所花费的时间(以毫秒为单位)
【发布时间】:2017-11-24 20:21:50
【问题描述】:

我正在尝试比较两种排序算法合并排序和快速排序,通过查看哪一种花费最少的时间对像 {8,7,6,5,4,3,2,1} 这样的小整数数组进行排序 我知道我不应该使用 clock() 并且我一直在尝试 time() 但每次它一直给我 0 所花费的时间。我也尝试过使用 Chrono,它也只给了我 0 有人可以帮我解决这个问题吗?

分类已经完成,它们工作正常,我就是这样设置的。

int Quiarr[] = {8, 7, 6, 5, 4, 3, 2, 1};
int arr_size = sizeof(Quiarr)/sizeof(Quiarr[0]);
start = time();
mergeSort(Quiarr, 0, arr_size - 1);
end = time();
msecs = ((double) (end - start)) * 1000 / CLOCKS_PER_SEC;
cout << msecss2 << " " << endl;

【问题讨论】:

标签: c++ time


【解决方案1】:

试试这个

auto t0 = std::chrono::high_resolution_clock::now();
// your sorting function here
auto t1 = std::chrono::high_resolution_clock::now();
auto elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(t2-t1);

high_resolution_clock::now(),具有精确的粒度。

注意:你需要对你的函数进行多次试验,这是因为操作系统调度程序,经过的时间不是恒定的,你需要考虑你得到的最小值。 (运行一个循环,重复上面的代码假设 1000 次,并打印经过的时间,重复次数最多的最小值是更合理的值)。

【讨论】:

  • 所有来自代码的输出即使在循环 1000 次之后也是直到 0
  • 然后尝试以下操作:auto elapsed = t2-t1; std::cout
猜你喜欢
  • 1970-01-01
  • 2022-01-11
  • 1970-01-01
  • 2017-07-16
  • 2019-02-11
  • 1970-01-01
  • 1970-01-01
  • 2010-11-30
  • 1970-01-01
相关资源
最近更新 更多