MergeSort

#define N 7
#define SIZE 20
#include<stdio.h>
struct RcdType{
	int key;
	int ord;
};
struct SqList{
	RcdType data[SIZE];
	int length;
};
void Merge(RcdType SR[],RcdType TR[],int i,int m,int t){
	int j=m+1;
	int k=i;
	while(i<=m&&j<=t){
		if(SR[i].key<SR[j].key)
			TR[k]=SR[i++];
		else TR[k]=SR[j++];
		k++;
	}
	while(i<=m) TR[k++]=SR[i++];
	while(j<=t) TR[k++]=SR[j++];
}
void MSort(RcdType SR[],RcdType TR[],int s,int t){
	if(s==t) TR[s]=SR[s];
	else{
		RcdType TR1[SIZE];
		int m=(s+t)/2;
		MSort(SR,TR1,s,m);
		MSort(SR,TR1,m+1,t);
		Merge(TR1,TR,s,m,t);
	}
}
void MergeSort(SqList &l){
	MSort(l.data,l.data,1,l.length);
}
void Print(SqList l){
	for(int i=1;i<=l.length;i++){
		printf("%3d%3d",l.data[i].key,l.data[i].ord);
	}
	printf("\n");
}
void main(){
	int i,j;
	RcdType d[N]={{49,1},{38,2},{65,3},{97,4},{76,5},{13,6},{27,7}};
	SqList l;
	for(i=1;i<=N;i++)
		l.data[i]=d[i-1];
	l.length=N;
	Print(l);
	MergeSort(l);
	Print(l);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值