如何测量冒泡排序10个数字的时间

时间:2017-12-19 12:57:26

标签: c bubble-sort

我正在尝试测量冒泡排序10个大数字所需的时间。我将这些数字放在一个大小为10的数组中。然后,我将数字冒泡10次并打印出每次所用的时间。

问题在于,由于某种原因,所有即时通讯都是零!

以下是我的主要内容:

 int n = sizeof(arr10)/sizeof(arr10[0]);
            start=clock();
            bubbleSort(arr10, n);
            end=clock();
            cpu_time_used = (double) (end - start) / CLOCKS_PER_SEC;
            printf("Bubble Sort time= %f\n",cpu_time_used);

这是冒泡排序的功能:

void bubbleSort(int arr[], int n)
{

int i, j;
for (i = 0; i < n-1; i++)

    // Last i elements are already in place
    for (j = 0; j < n-i-1; j++)
        if (arr[j] > arr[j+1])
            swap(&arr[j], &arr[j+1]);
}

void swap(int *xp, int *yp)
{
    int temp = *xp;
    *xp = *yp;
    *yp = temp;
}

2 个答案:

答案 0 :(得分:2)

结果为零是probaby,因为clock()的分辨率太低。有CLOCKS_PER_SEC个刻度,CLOCKS_PER_SEC为1000.您的示例可能在不到1000秒(小于1毫秒)内运行。

答案 1 :(得分:0)

使用%e格式说明符打印秒数。最有可能发生的是这个数字很小,%f只打印0

无论如何打印它,结果都是无用的,因为这么短的时间与测量算法无关,操作系统中的其他噪声将占主导地位。

测量10个数字的排序时间绝不会产生任何重要价值。尝试成千上万的数字。并且不要忘记在启用优化的情况下进行编译。