A. 利用随机函数产生N个随机整数,对这些数进行多种方法进行排序
给你个代码:
/*
利用随机函数产生N个随机整数,对这些数进行多种方法进行排序
*/
#include <stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 10000
void main()
{
int i,j,k,n;
int n1,t;
int a[N],b[N];
FILE *fp;
clock_t start,finish;
int time1,time2,time3;
printf("输入要产生的随机数个数:");
scanf("%d",&n);
srand((unsigned)time(NULL));
for(i=0;i<n;i++)
a[i]=rand();
for(i=0;i<n;i++)b[i]=a[i];
printf("**************************\n");
printf("\t插入排序\n");
printf("**************************\n");
start=clock();
for(i=1;i<n;i++)
{
t=b[i];
for(j=i-1;j>=0&&t<b[j];j--)
b[j+1]=b[j];
b[j+1]=t;
}
finish=clock();
time1=finish-start;
printf("插入排序耗时%d毫秒!\n\n\n",time1);
fp=fopen("output1.txt","w");
for(i=0;i<n;i++)
fprintf(fp,"%d ",b[i]);
fclose(fp);
for(i=0;i<n;i++)b[i]=a[i];
printf("**************************\n");
printf("\t选择排序\n");
printf("**************************\n");
start=clock();
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(b[k]>b[j])k=j;
t=b[i];
b[i]=b[k];
b[k]=t;
}
finish=clock();
time2=finish-start;
printf("选择排序耗时%d毫秒!\n\n\n",time2);
fp=fopen("output2.txt","w");
for(i=0;i<n;i++)
fprintf(fp,"%d ",b[i]);
fclose(fp);
for(i=0;i<n;i++)b[i]=a[i];
printf("**************************\n");
printf("\t冒泡排序\n");
printf("**************************\n");
start=clock();
n1=n-1;
while(n1>0)
{
j=0;
for(i=0;i<n1;i++)
if(b[i]>b[i+1])
{
t=b[i];
b[i]=b[i+1];
b[i+1]=t;
j=i;
}
n1=j;
}
finish=clock();
time3=finish-start;
printf("冒泡排序耗时%d毫秒!\n\n\n",time3);
fp=fopen("output3.txt","w");
for(i=0;i<n;i++)
fprintf(fp,"%d ",b[i]);
fclose(fp);
}
运行结果:
输入要产生的随机数个数:10000
**************************
插入排序
**************************
插入排序耗时125毫秒!
**************************
选择排序
**************************
选择排序耗时203毫秒!
**************************
冒泡排序
**************************
冒泡排序耗时485毫秒!
Press any key to continue