C语言测试程序运行时间,程序有错误,求改正。

用冒泡法对数组A排序;输出排序过程中元素的比较次数、交换(或移动)次数,以及排序过程所消耗的时间(以s或ms为单位);
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
double bubble_sort(int b[21]);
FILE*fp;
int i=0,n;
int a[21];
double time;
fp=fopen("1.dat","w");
while(!feof(fp)) //用fprintf函数写入数据。
{

n= rand() % 100+ 1;
printf("%8d",n);
fprintf(fp,"%8d",n);
i++;
if(i==20)break;

}
fclose(fp);
fp=fopen("1.dat","r");
a[0]=0;
i=1;
while(!feof(fp))
{
if((fscanf(fp,"%d",&a[i]))!=1) //用fscanf函数读入数据
break;
i++;
}
time=bubble_sort(a);
printf("\n程序运行时间是:\n");
printf("%fsecs\n",time);
system("pause");
return 0;
}
double bubble_sort(int b[21]) //冒泡排序。
{
clock_t start,finish;
double duration;
int i,j,temp,n=0,m=0;
start=clock();
for(i=0;i<19;i++,n++)
for(j=1;j<21-i;j++,n++)
if(b[j]>b[j+1])
{ n++;
temp=b[j];
b[j]=b[j+1];
b[j+1]=temp;
m+=3;
}
finish=clock();
duration=(double)(finish-start)/CLOCKS_PER_SEC;
printf("排序后的数组为\n");
for(i=0;i<21;i++)
printf("%8d",b[i]);
printf("\n比较的次数为:%d交换的次数为:%d\n",n+3,m);
return (duration);
}
//拜托大家帮忙检查下比较次数和交换次数的结果对不对,还有为什么运行时间总是显示为0呢??求教!!

交换次数假设一开始循环条件都没有成立,你比较了一次,但你的n却等于零这就是个bug
改:照正常习惯的改冒泡改
for(i=1,n++;i<21;i++,n++)
for(j=1,n++;j<21-i-1;i++,n++)

{
........
}
至于运行时间为什么为零我看了应该是对的,也不知道为什么,虽然没答好但我还是要 求accept,毕竟看了这么长时间
温馨提示:答案为网友推荐,仅供参考