起泡排序的运行时间
程序代码:#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
typedef struct
{int key;
}rectype;
void bubblesort(rectype r[],int n){
int i,j,noswap;
rectype temp;
for(i=0;i<=n-2;i++)
{noswap=true;
for(j=n-2;j>=i;j--)
if(r[j+1].key<r[j].key)
{temp=r[j+1];
r[j+1]=r[j];
r[j]=temp;
noswap=false;
}
if(noswap) break;
}
}
void insertsort(rectype r[],int n)
{int i,j,m;
for(i=2;i<n;i++)
{
r[0]=r[i];
j=i-1;
while(r[0].key<r[j].key)
r[j+1]=r[j--];
r[j+1]=r[0];
}
}
int main(){
{rectype a[100000];
int i,t,n=100000;
clock_t start, finish,start1,finish1;
double value,duration;
srand(time(0));
for(i=0;i<100000;i++)
{t=rand()%100000+1;
a[i].key=t;}
start=clock();
insertsort(a,n);
finish=clock();
value= (double)(finish - start) / CLOCKS_PER_SEC;
cout<<value<<endl;
start1=clock();
bubblesort(a,n);
finish1=clock();
duration=(double)(finish1-start1)/ CLOCKS_PER_SEC;
cout<<duration<<endl;
getchar();
}
}
写的乱了点,运行了4次程序发现直接选择排序的运行时间在11秒3左右,冒泡排序的时间从7秒多到19秒多不等,这两个排序的平均时间复杂度都是O(n²),为什么冒泡排序的时间变化这么大呢,是不是程序有舍呢么问题呢,求高手指点

