首页 > 代码库 > 归并排序
归并排序
#include<stdio.h>#define MAXSIZE 20typedef int KeyType;typedef struct{ KeyType key;}RcdType;typedef struct { RcdType r[MAXSIZE+1]; int length;}Sqlist;void Merge(RcdType sr[],RcdType tr[],int s,int m,int t){ int i, k,j; j=m+1;i=s;k=s; while(i<=m&&j<=t) if(sr[i].key<=sr[j].key) tr[k++]=sr[i++]; else tr[k++]=sr[j++]; while(i<=m) tr[k++]=sr[i++]; while(j<=t) tr[k++]=sr[j++]; }void Msort(RcdType sr[],RcdType tr1[],int s,int t){ int m; RcdType tr2[MAXSIZE+1]; if(s==t) tr1[s]=sr[s]; else{ m=(s+t)/2; Msort(sr,tr2,s,m); Msort(sr,tr2,m+1,t); Merge(tr2,tr1,s,m,t); }}void MergeSort(Sqlist &L){Msort(L.r,L.r,1,L.length);}void main(){Sqlist A; int i; printf("\n请输入待排序的个数"); scanf("%d",&A.length); printf("\n请输入待排序的数字"); for(i=1;i<=A.length;i++) scanf("%d",&A.r[i].key); MergeSort(A); printf("\n排好序的数字为"); for(i=1;i<=A.length;i++) printf("%d ",A.r[i].key);}
归并排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。