《基于C的常用的排序算法》由会员分享,可在线阅读,更多相关《基于C的常用的排序算法(13页珍藏版)》请在金锄头文库上搜索。
1、#include #include #include #include #include #define M 10 #define K 8 #define N 100000 #define error 0 #define success 1int rand_b() /生成随机数文件 int aN; int i; FILE *fop; srand(unsigned)time(NULL); for(i=0;i=0;j=j-1) if(x=left;j-)/元素右移 aj+1=aj; aleft=x;/元素就位 void shell_sort(int a,int d,int n,int t)/希尔排
2、序 int i,j,h,k,x; for(h=0;h=0 ai=ai+1; ai+1=x; flag=1;/置本遍扫描过程发生过元素交换 j-; /*快速排序*/ void partition(int a,int s,int t,int x=as; i=s,j=t; do while(aj=x) else ai=ak; i=k; k=2*i; ai=x; void heap_sort(int a,int n)/主控函数 int i,x; for(i=n/2;i=1;i-) heapify(a,i,n); for(i=n;i1;i-) x=a1; a1=ai; ai=x; heapify(a,1
3、,i-1); /*合并排序*/void merge(int a,int p,int q,int s,int t)/有序段合并函数 int i,j,k,bN; i=p,j=s,k=p-1; while(ic); for(i=1;ic); p-next=q; p=q; q=(ptr)malloc(sizeof(node); p-next=NULL; fclose(fp); return h; void radix_sort(ptr char x; ptr p; struct ptr head,tail;qM;for(j=k-1,len=1;j=0;j-,len+) for(i=0;ic); adr
4、=l-len; if(adr=0) x=h-cadr; if(x=0 qy.tail=h; h=h-next; i=0; while(qi.head=NULL) i+; h=qi.head; p=qi.tail; for(i+;inext=qi.head; p=qi.tail; p-next=NULL; void main() printf(“请选择排序方法:n“); printf(“1.插入排序n“); printf(“2.二分排序n“); printf(“3.希尔排序n“); printf(“4.冒泡排序n“); printf(“5.快速排序n“); printf(“6.堆排序n“);pr
5、intf(“7.合并排序n“); printf(“8.基数排序n“); int aN; int i,b,c,lb; float interval; b=rand_b(); if(b=1) FILE *fp,*fwp;clock_t start,end;while(1) fp=fopen(“sort.txt“,“r“); if(fp=NULL) coutc; switch(c) case 0: exit(0); case 1: start=clock(); sinsert_sort(a,N); end=clock(); interval=(end-start)*1.0/CLOCKS_PER_SEC; printf(“算法用时:%f“,interval); fwp=fopen(“sort1.txt“,“w“); if(fwp=NULL) printf(“打开文件失败!“); for(i=0;ic); p=p-next; fclose(fwp); system(“pause“); system(“cls“); else printf(“随机数文件创建失败!“); return;