实现选择排序、冒泡排序、插入排序和快速排序,调用随机数函数rand产生100000-200000个数据,对比不同算法性能
为什么最后显示的时候是这个情况??插入排序用时0.快速排序不显示?
#include <stdio.h>
#include<malloc.h>
#include<string.h>
#include<time.h>
clock_t t1,t2,t4,t5,t7,t8,t10,t11;
void selectionSort(int A[],int n);
void bubbleSort(int A[],int n);
void insertSort(int A[],int n);
void quickSort(int A[],int begin,int end);
void Swap(int A[],int i,int j);
int main()
{
int n,i;
n=100000;
int A[n];
int m;
srand(time(NULL));
for(i=0;i<n;i++)
{
m=rand();
A[i]=m;
}
double t1,t2;
t1=clock();
selectionSort(A,n); //选择排序
t2=clock();
printf("selectionSort uses %lf seconds!\n",(double)(t2-t1)/CLOCKS_PER_SEC);
double t4,t5;
t4=clock();
bubbleSort(A,n);//冒泡排序
t5=clock();
printf("bubbleSort uses %lf seconds!\n",(double)(t5-t4)/CLOCKS_PER_SEC);
double t7,t8;
t7=clock();
insertSort(A,n);//插入排序
t8=clock();
printf("insertSort uses %lf seconds!\n",(double)(t8-t7)/CLOCKS_PER_SEC);
double t10,t11;
t10=clock();
quickSort(A,0,n-1);//快速排序
t11=clock();
printf("quickSort uses %lf seconds!\n",(double)(t11-t10)/CLOCKS_PER_SEC);
}
void selectionSort(int A[],int n)
{
for (int i=0;i<n-1;i++)
{
int j=i;
for (int k=i+1;k<n;k++)
{
if (A[k]<A[j])
{
j=k;
}
}
Swap(A,i, j);
}
}
void bubbleSort(int A[],int n)
{
for(int i=0;i<n-1;i++)
{
for(int j=0;j<n-1-i;j++)
{
if(A[j]>A[j+1])
{int b;
b=A[j];
A[j]=A[j+1];
A[j+1]=b ;}
}
}
}
void insertSort(int A[],int n)
{
for (int i=1;i<n;i++)
{
int temp=A[i];
int k=i-1;
while (temp<A[k]&& k>=0)
{
A[k+1]=A[k];
k--;
}
A[k+1]=temp;
}
}
void quickSort(int A[], int begin, int end)
{ if(begin>end)
return;
int tmp=A[begin];
int i=begin;
int j=end;
while(i!=j){
while(A[j]>=tmp&&j>i)
j--;
while(A[i]<=tmp&&j>i)
i++;
if(j>i){
int t=A[i];
A[i]=A[j];
A[j]=t;
}
}
A[begin]=A[i];
A[i]=tmp;
quickSort(A,begin,i-1);
quickSort(A,i+1,end);
}
void Swap(int A[],int i,int j)
{
int temp;
temp=A[i];
A[i]=A[j];
A[j]=temp;
}