计算执行 C 程序代码所需的时间?

标签 c sorting time

我需要计算C语言中各种排序算法所花费的时间 我正在检查对 100,200,300,400 和 500 个元素进行排序所需的时间。

令人惊讶的是,对它们进行排序所花费的时间似乎是相同的!

代码中有什么问题,我得到的时间是 0.00000,这也是荒谬的,需要 0 秒来对数字进行排序。

我得到这样的结果的代码有什么问题?

必须对代码进行哪些更改才能获得对数字进行排序所需的准确时间(以秒为单位)。

#include <stdio.h>
#include <time.h>

// Bubble Sort on 100 to 500 elements
int main()
{
    int g;
    //clock_t ti;
    for(g=0;g<5;g++)
    {
    int n, i, j, swap;
    clock_t ti;
    time_t t;
    srand((unsigned) time(&t));

    //scanf("%d", &n);
    n=100;
    int array[n*(g+1)]; 



    for (i = 0; i < n; i++)
        array[i] = rand() % 10000;// Generating random numbers as array entries


    //printf("%f \n",ti);
    ti = clock();
    for (i = 0 ; i < ( n - 1 ); i++)
    {
        for (j = 0 ; j < n - i - 1; j++)
        {
            if (array[j] > array[j+1]) 
            {
                swap       = array[j];
                array[j]   = array[j+1];
                array[j+1] = swap;
            }
        }
    }

    ti = clock() - ti;
    double time_taken = ((double)ti)/CLOCKS_PER_SEC;


    /*for ( i = 0 ; i < n ; i++ )
        printf("%d \n ", array[i]);*/



    printf("Time Taken to sort %d elements is %f\n",(g+1)*100,time_taken);
    }

    return 0;
}

我得到的输出是:

对 100 个元素进行排序所需的时间为 0.000000

对 200 个元素进行排序所需的时间为 0.000000

对 300 个元素进行排序所需的时间为 0.000000

对 400 个元素进行排序所需的时间为 0.000000

对 500 个元素进行排序所需的时间为 0.000000

最佳答案

clock() 的分辨率可能太低。检查您的 CLOCKS_PER_SEC 值。

clock_gettime()提供高分辨率计时器。

关于计算执行 C 程序代码所需的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21328459/

相关文章:

php - 插入 h :mm pm/am time format into database using MYSQL

c - 使用结构取消引用指向不完整类型的指针

检查数组中的元素

c - 具有相同功能的 C 中的 Makefile 错误

arrays - perl - 尝试根据值对 'hashes' 数组进行排序

c# - 日本的完整日期时间产生问号

c - 在没有尾部或头的列表中插入元素

c++ - 查找和排序列表

matlab - 在 MATLAB 中对表的内容进行排序

java - 集成测试其行为取决于当前时间的 API