C 给泡沫排序计时

C 给泡沫排序计时,c,sorting,timing,bubble-sort,C,Sorting,Timing,Bubble Sort,我必须计算气泡排序需要多长时间,并打印它需要多长时间。在我的程序中,打印的时间始终为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] = ra

我必须计算气泡排序需要多长时间,并打印它需要多长时间。在我的程序中,打印的时间始终为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;
}
intmain()
{
srand((无符号)时间(NULL));
int arr[5000],arr2[5000];
int i;
开始、结束的时间;
双时差;
对于(i=0;i<5000;i++)
{
arr[i]=rand()%100+1;
arr2[i]=arr[i];
}

cout我认为您需要使用比difftime(仅以秒为单位报告)更精确的工具:


请参阅:了解更多信息。

我认为您需要使用比difftime(仅以秒为单位报告)更精确的工具:


请参阅:了解更多信息。

它的执行速度比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;
const int runs=1000000;
时间(&开始);

对于(int r=0;r,它的执行速度比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;
const int runs=1000000;
时间(&开始);

对于(int r=0;r5000对于寄存器来说太小了,您需要运行整个排序过程100或1000次,然后除以该数字以获得一些时间


有人告诉我,要想获得一段美好的时光,你需要让程序运行5到10秒

5000对于注册来说太小了,你需要运行整个排序过程100或1000次,然后除以这个数字,得到一些时间


有人告诉我,要想获得一段美好的时光,你需要让程序运行5到10秒

听起来时间粒度太大,无法捕获排序例程所花费的时间(即,
bubbleSort
在不到1秒的时间内执行)。您需要多次运行该例程,以使其花费足够长的时间进行注册。请注意,冒泡排序在计算机科学中除了用于说明如何不执行操作外,没有其他位置。这是一个类的作业。我们必须创建一个5000的数组,并用数字1-100填充,然后在该数组上运行两种不同的排序方法听起来时间粒度太大,无法捕获排序例程所花费的时间(即
bubbleSort
在不到1秒的时间内执行)。您需要多次运行该例程,以使其花费足够长的时间进行注册。请注意,冒泡排序在计算机科学中除了用于说明如何不执行操作外,没有其他位置。这是一个类的作业。我们必须创建一个5000的数组,并用数字1-100填充,然后在该数组上运行两种不同的排序方法虽然是真的,但计时器精度为1秒,运行时间不到1秒(在上面的代码中添加了气泡排序实现,并在我的笔记本电脑上运行),与使用更好的计时器相比,运行10天以获得精度为10ms的输出似乎效率较低。或者运行100秒,则您知道您的精度为0.01s。所述循环的一个问题是,在第一次迭代后,数组被排序。此后,您仅对b的最佳情况进行计时ubblesort——一个已经排序的数组。根据Sparky已经指出的,这不仅效率低下,而且是不正确的。虽然如此,计时器精度为1秒,运行时间不到1秒(将气泡排序实现添加到上面的代码中,并在我的笔记本电脑上运行),与使用更好的计时器相比,运行10天以获得精度为10ms的输出似乎效率较低。或者运行100秒,则您知道您的精度为0.01s。所述循环的一个问题是,在第一次迭代后,数组被排序。此后,您仅对b的最佳情况进行计时ubblesort——一个已经排序的数组。根据Sparky已经指出的,这不仅效率低下,而且是不正确的。也值得一看也值得一看