c语言实现数组排序详述.docx
- 文档编号:23958291
- 上传时间:2023-05-22
- 格式:DOCX
- 页数:15
- 大小:44.74KB
c语言实现数组排序详述.docx
《c语言实现数组排序详述.docx》由会员分享,可在线阅读,更多相关《c语言实现数组排序详述.docx(15页珍藏版)》请在冰豆网上搜索。
c语言实现数组排序详述
主函数测试
#include
#include
#include
#include"Sort.h"
voidmain()
{
inti,s,j,n;
doublesum1=0,sum2=0,sum3=0,sum4=0,sum5=0,sum6=0;
doubledif;
doubleavg1,avg2,avg3,avg4,avg5,avg6;
time_tstart,end;
srand((unsigned)time(NULL));
printf("请输入一个30000到300000的整数:
");
while(true){
scanf("%d",&n);
DataType*a1=(DataType*)malloc(sizeof(DataType)*n);
DataType*a2=(DataType*)malloc(sizeof(DataType)*n);
DataType*a3=(DataType*)malloc(sizeof(DataType)*n);
DataType*a4=(DataType*)malloc(sizeof(DataType)*n);
DataType*a5=(DataType*)malloc(sizeof(DataType)*n);
DataType*a6=(DataType*)malloc(sizeof(DataType)*n);
if(n>=30000&&n<=300000)
{
for(j=0;j<10;j++)
{
for(i=0;i { s=rand(); a1[i].key=s; a2[i].key=a1[i].key; a3[i].key=a1[i].key; a4[i].key=a1[i].key; a5[i].key=a1[i].key; a6[i].key=a1[i].key; } printf("*****************************************************************\n"); //冒泡排序测试 start=clock(); BubbleSort(a1,n-1); end=clock(); dif=(end-start)/1000.00; sum1=(end-start)/1000.00+sum1; printf("BubbleSort: %.8f\n",dif); avg1=sum1/10; //快速排序测试 start=clock(); QuickSort(a2,0,n-1); end=clock(); dif=(end-start)/1000.00; sum2=(end-start)/1000.00+sum2; printf("QuickSort: %.8f\n",dif); avg2=sum2/10; //插入排序测试 start=clock(); InsertSort(a3,n); end=clock(); dif=(end-start)/1000.00; sum3=(end-start)/1000.00+sum3; printf("InsertSort: %.8f\n",dif); avg3=sum3/10; //选择排序测试 start=clock(); SelectSort(a4,n); end=clock(); dif=(end-start)/1000.00; sum4=(end-start)/1000.00+sum4; printf("SelectSort: %.8f\n",dif); avg4=sum4/10; //堆排序测试 start=clock(); HeapSort(a5,n); end=clock(); dif=(end-start)/1000.00; sum5=(end-start)/1000.00+sum5; printf("HeapSort: %.8f\n",dif); avg5=sum5/10; //归并排序测试 start=clock(); MergeSort(a6,n); end=clock(); dif=(end-start)/1000.00; sum6=(end-start)/1000.00+sum6; printf("MergeSort: %.8f\n",dif); avg6=sum6/10; printf("\n"); } printf("<<<<<<<-------------------avg----------------->>>>>>>>\n"); printf("BubbleSort: %.4f秒\n",avg1); printf("QuickSort: %.4f秒\n",avg2); printf("InsertSort: %.4f秒\n",avg3); printf("SelectSort: %.4f秒\n",avg4); printf("HeapSort: %.4f秒\n",avg5); printf("MergeSort: %.4f秒\n",avg6); printf("\n-----------------------------------------------------------------------\n"); printf("%d",n); printf("\n-----------------------------------------------------------------------\n"); break; }else { printf("****************************请重新输入****************************\n该数必须是30000到300000之间的整数.\n"); } } } 头文件 typedeflongintKeyType; typedefstruct { KeyTypekey; }DataType; //起泡排序 voidBubbleSort(DataTypea[],intn); //快速排序 voidQuickSort(DataTypea[],intlow,inthigh); //插入排序 voidInsertSort(DataTypea[],intn); //选择排序 voidSelectSort(DataTypea[],intn); //堆排序 voidCreatHeap(DataTypea[],intn,inth); voidInitCreatHeap(DataTypea[],intn); voidHeapSort(DataTypea[],intn); //归并排序 voidMerge(DataTypea[],intn,DataTypeswap[],intk); voidMergeSort(DataTypea[],intn); 头文件函数 #include #include #include #include"Sort.h" //起泡排序 voidBubbleSort(DataTypea[],intn) { inti,j,flag=1; DataTypetemp; for(i=1;i { flag=0; for(j=0;j { if(a[j].key>a[j+1].key) { flag=1; temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } } //快速排序 voidQuickSort(DataTypea[],intlow,inthigh) { inti=low,j=high; DataTypetemp=a[low]; while(i { while(i if(i { a[i]=a[j]; i++; } while(i if(i { a[j]=a[i]; j--; } } a[i]=temp; if(low if(i } //插入排序 voidInsertSort(DataTypea[],intn) { inti,j; DataTypetemp; for(i=0;i { temp=a[i+1]; j=i; while(j>-1&&temp.key { a[j+1]=a[j]; j--; } a[j+1]=temp; } } //选择排序 voidSelectSort(DataTypea[],intn) { inti,j,small; DataTypetemp;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实现 数组 排序 详述