c语言实现选择排序、冒泡排序、插入排序和快速排序,调用随机数函数rand产生100000-200000个数据,对比不同算法性能,输出所需的时间
/* Note:Your choice is C IDE */
#include "stdio.h"
//插入排序
void insertSort(int a[10]){
int i,temp,pos,k;
for(i=1;i<10;i++)
{
temp=a[i];
pos = i-1;
//把前面大于temp的数据往后移
while((pos>=0) && (temp<a[pos])){//后面的元素小于前面的元素
a[pos+1]=a[pos]; //后面一个元素等于前面一个元素的值
pos--;
}
//把temp的值插入到pos+1的位置
a[pos+1]=temp;
//打印排序过程
printf("第%d趟排序过程如下:",i+1);
for(k=0;k<10;k++)
printf("%d\t",a[k]);
printf("\n");
}
printf("插入排序之后:\n");
for(i=0;i<10;i++)
printf("%d\t",a[i]);
printf("\n");
}
//冒泡排序
void BubbleSort(int a[10]){
int i,j,temp,k;
for(i=1;i<10;i++)
{
for(j=9;j>=i;j--)
{
if(a[j]<a[j-1]){
temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
}
}
//打印排序过程
printf("第%d趟排序过程如下:",i+1);
for(k=0;k<10;k++)
printf("%d\t",a[k]);
printf("\n");
}
printf("冒泡排序之后:\n");
for(i=0;i<10;i++)
printf("%d\t",a[i]);
}
//选择排序
void SelectiontSort(int a[10]){
int i,j,temp,index,k;
for(i=0;i<9;i++){
temp=a[i];
index=i;
for(j=i+1;j<10;j++){
if(temp>a[j]){
temp=a[j];
index=j;
}
}
//交换
a[index]=a[i];
a[i]=temp;
//打印排序过程
printf("第%d趟排序过程如下:",i+1);
for(k=0;k<10;k++)
printf("%d\t",a[k]);
printf("\n");
}
printf("选择排序之后:\n");
for(i=0;i<10;i++)
printf("%d\t",a[i]);
}
void main()
{
int a[10]={89,1,64,35,74,21,100,99,1000,2};
int k;
int n;
//排序之前:
printf("排序之前:\n\t\t\t\t");
for(k=0;k<10;k++)
printf("%d,",a[k]);
printf("\n");
//---------------------------------
printf("请选择排序:\n");
printf("1.插入排序:\n");
printf("2.冒泡排序:\n");
printf("3.选择排序:\n");
scanf("%d",&n);
switch(n){
case 1:
insertSort(a);
break;
case 2:
BubbleSort(a);
break;
case 3:
SelectiontSort(a);
break;
}
}