#C语言冒泡排序时间求救!
为什么最差的逆序在冒泡排序中的运行时间比随机数冒泡排序的运行时间还短?!
#include <stdio.h>
#include <time.h>
#define MAXN 30000
void swap1(int *px,int *py){
int temp;
temp=*px;
*px=*py;
*py=temp;
}
void bubble(int a[],int n){
int i;
int j;
int flag=0;
for(i=1;i<n;i++){
for(j=0;j<n-i;j++){
if(a[j]>a[j+1]){
swap1(&a[j],&a[j+1]);
}
}
}
}
void swap2(int a[],int n){
int half;
half=n/2;
int i;
for(i=0;i<half;i++){
swap1(&a[i],&a[n-i-1]);
}
}
int main()
{
int a[MAXN];
int i;
srand((unsigned)time(NULL)); //给随机数种子
for(i=0;i<MAXN;i++){
a[i]=rand();
}
clock_t start_time=clock();
//clock_t 是 一种数据类型,通常用于表示程序运行的时间。 它是由 time.h 库中的 clock() 函数返回的 CPU 时钟周期数的数据类型。
bubble(a,MAXN);
clock_t end_time = clock();
for(i=0;i<20;i++){
printf("%3d ",a[i]);
}
double elapsed_time = (double) (end_time - start_time) / CLOCKS_PER_SEC;
printf("\nRandom Bubble Running Time:为 %.3f 秒。\n", elapsed_time);
swap2(a,MAXN);
for(i=0;i<20;i++){
printf("%3d ",a[i]);
}
start_time = clock();
bubble(a,MAXN);
end_time = clock();
elapsed_time = (double) (end_time - start_time) / CLOCKS_PER_SEC;
printf("\nWorst Bubble Running Time:为 %.3f 秒。\n", elapsed_time);
}