You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在C语言中如何测量插入排序处理数组dizi1的运行时间

插入排序运行时间测量实现方法
  • 新增必要头文件
    C标准库的time.h提供了时间测量相关的接口,需要在代码头部引入:
#include <time.h>
  • 调整代码逻辑
  1. 为了避免IO操作干扰测量结果,建议将insort函数中打印排序后数组的代码移除,移到计时结束后执行。
  2. 100个元素的插入排序耗时极短,可能出现测量结果为0的情况,建议将数组规模调整到10000及以上,测量结果更准确。
  3. 计时逻辑为:排序执行前记录CPU时钟数,排序结束后再次记录,两者差值除以时钟频率即可得到运行耗时。
  • 完整修改后代码示例
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

// 纯排序逻辑,移除内部打印
void insort(int dizi[],int sinir)
{
    int j, sakla;
    for(int i=1; i<sinir; i++){
        sakla = dizi[i];
        j = i;
        while(j > 0 && sakla < dizi[j-1]){
            dizi[j] = dizi[j-1];
            j--;
        }
        dizi[j] = sakla;
    }
}

int main(){
    // 调大数组规模提升测量精度
    int arr_size = 10000;
    int dizi1[arr_size];
    // 初始化随机数种子,保证每次运行数组不一样
    srand(time(NULL));
    for (int i=0;i<arr_size;++i)
    {
        dizi1[i]=rand() % 100;
    }
    // 开始计时
    clock_t start = clock();
    insort(dizi1, arr_size);
    clock_t end = clock();
    // 转换为毫秒单位输出
    double cost_time = (double)(end - start) * 1000 / CLOCKS_PER_SEC;
    printf("排序运行耗时:%f 毫秒\n", cost_time);

    // 需要打印排序后数组可在此处添加循环打印逻辑
    return 0;
}
  • 补充说明
    如果要保留原数组打印逻辑,只需要把打印代码放在计时逻辑之外即可,不会影响排序耗时的统计结果。如果希望测量小数据量的排序耗时,可以循环执行排序1000次后取平均耗时,结果会更可靠。

内容的提问来源于stack exchange,提问作者Ahmet Kaya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 17:39:03