本程序演示如何测试一段程序的运行时间。
以冒泡排序算法为例。
#include "time.h" //与时间相关的函数
#include "stdlib.h" //rand()函数在此库中
#include "stdio.h" //输入输出相关函数
void BubbleSort(int *a, int n)
{//冒泡排序, a是指针,代表连续空间的首地址,n表示有n个元素
for(int i=1;i<=n-1;i++)
{
for(int j=0;j<=n-i-1;j++)
{
if(a[j]>a[j+1])
{
int t;
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
}
int main( )
{
time_t start, stop;
int n;
int data_num[]={10000,30000,60000,90000};//问题规模
int j;
for(j=0;j<4;j++)
{
n=data_num[j];//问题规模
int a[n]={0};
for(int i=0;i<n;i++)
a[i]=rand();
start=time (0); //单位是秒
BubbleSort(a,n);
stop=time (0);
time_t runTime = stop - start;
printf ( "%d %d\n" , n,runTime );
}
return 0;
}
运行结果:
其中,第一列是数据的个数,第二列是对应冒泡排序的执行时间。
以第一列为横坐标,第二列为纵坐标,在Excel中作散点图:
该图形跟 y=n*n 函数的形态相似。
该算法的时间复杂度,用O表示法恰是:O(n*n)