我必须计算冒泡排序需要多长时间并打印所需的时间。在我的程序中,打印的时间总是0.00秒。谁能告诉我我做错了什么?
int main()
{
srand((unsigned)time(NULL));
int arr[5000], arr2[5000];
int i;
time_t start, end;
double timeDiff;
for(i=0; i < 5000; i++)
{
arr[i] = rand() % 100 + 1;
arr2[i] = arr[i];
}
cout << "Here is the initial array:" << endl;
printArray(arr, 5000);
time(&start);
bubbleSort(arr, 5000);
time(&end);
timeDiff = difftime(end, start);
cout << "\nHere is the array after a bubble sort:" << endl;
printArray(arr, 5000);
cout << fixed << setprecision(2) << "\nIt took " << timeDiff << " seconds to bubble sort the array." << endl;
system("pause");
return 0;
}
答案 0 :(得分:6)
我认为你需要使用比difftime更精确的东西(只能在几秒钟内报告):
有关详细信息,请参阅:Time difference in C++。
答案 1 :(得分:4)
执行速度比cpu时钟更新要快。你需要做的是执行你的排序几百万次,时间,并将时间除以迭代次数(确保你使用双精度来获得最高精度。所以基本上是这样的:
const int runs=1000000;
time(&start);
for(int r=0;r<runs;++r)
bubbleSort(arr, 5000);
time(&end);
timeDiff = difftime(end, start);
double realduration=timeDiff/(double)runs;
答案 2 :(得分:0)
5000是小到注册你需要运行整个排序过程100或1000次然后除以那个数字来获得一些时间
我被告知要度过一段美好时光,你需要让程序运行5到10秒