发布时间:2019-07-31 19:00:33
#include <stdio.h>#include <stdlib.h>#include <time.h>#define RANDNUM 10000 //随机数的个数typedef struct{ int key;}ElemType;//冒泡排序void BubbleSort(ElemType a[], int n) { int i,j; ElemType temp; for(i=1;i<n;i++) { for(j=n-1;j>=i;j--) { if(a[j+1].key<a[j].key) { temp.key=a[j+1].key; a[j+1].key=a[j].key; a[j].key=temp.key; } } } }void QuickSort(ElemType a[], int low, int high)//快速排序 { int i,j; ElemType temp; i=low; j=high; temp=a[low]; while(i<j) { while(i<j&&temp.key<=a[j].key) j--; if(i<j) { a[i]=a[j]; i++; } while(i<j&&a[i].key<temp.key) i++; if(i<j) { a[j]=a[i]; j--; } } a[i]=temp; if(low<i) QuickSort(a,low,i-1); if(i<high) QuickSort(a,j+1,high); }void InsertSort(ElemType a[], int n)//插入排序 { int i,j; ElemType temp; for(i=0;i<n-1;i++) { temp=a[i+1]; j=i; while(j>-1&&temp.key<a[j].key) { a[j+1]=a[j]; j--; } a[j+1]=temp; } }int main(){ int i,j; ElemType a[RANDNUM],arr[RANDNUM],iRandNum[RANDNUM];//存放随机数 clock_t first,second; //记录开始和结束时间(以毫秒为单位) for(i=0;i<RANDNUM;i++) {//产生1万个随机数 iRandNum[i].key=rand()%RANDNUM; a[i].key=iRandNum[i].key; arr[i].key=iRandNum[i].key; } first=clock(); //开始时间 BubbleSort(iRandNum,10000);//此处加入排序算法程序 second=clock();//结束时间 printf("冒泡排序时间为%fms\n",(double)(second-first)/ CLOCKS_PER_SEC); //显示排序算法所用的时间 first=clock(); //开始时间 QuickSort(a,0,9999);//此处加入排序算法程序 second=clock();//结束时间 printf("快速排序时间为%fms\n",(double)(second-first)/ CLOCKS_PER_SEC); first=clock(); //开始时间 InsertSort(arr,10000);//此处加入排序算法程序 second=clock();//结束时间 printf("插入排序时间为%fms\n",(double)(second-first)/ CLOCKS_PER_SEC); return 0; }
补充:冒泡排序时间为0.249000ms快速排序时间为0.000000ms插入排序时间为0.079000ms--------------------------------Process exited after 0.4132 seconds with return value 0请按任意键继续. . .一万个数据,对快速排序,就目前的电脑,不费时间的
改
#define RANDNUM 40000 //随机数的个数
另外要改(你原来是固定10000的)
BubbleSort(iRandNum,RANDNUM);//此处加入排序算法程序
QuickSort(a,0,RANDNUM-1);//此处加入排序算法程序
InsertSort(arr,RANDNUM);//此处加入排序算法程序
结果为(我是i7 8系列的电脑 )
你这代码写的也太乱了,怎么看。