用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c代码库

归并排序(两路归并的迭代算法)

2012-10-11 作者: 神马举报

[c]代码库

void MergeSort ( S_TBL *p,ElemType *rf )
{ /*对*p 表归并排序,*rf 为与*p 表等长的辅助数组*/
	ElemType *q1,*q2;
	q1=rf;
	q2=p->elem;
	for ( len=1; len<p->length; len=2*len ) /*从q2 归并到q1*/
	{
		for ( i=1; i+2*len-1<=p->length; i=i+2*len )
			Merge ( q2,q1,i,i+len,i+2*len-1 ); /*对等长的两个子表合并*/
		if ( i+len-1<p->length )
			Merge ( q2,q1,i,i+len,p->length ); /*对不等长的两个子表合并*/
		else if ( i<=p->length )
			while ( i<=p->length ) /*若还剩下一个子表,则直接传入*/
				q1[i]=q2[i];
		q1<-->q2; /*交换,以保证下一趟归并时,仍从q2 归并到q1*/
		if ( q1!=p->elem ) /*若最终结果不在*p 表中,则传入之*/
			for ( i=1; i<=p->length; i++ )
				p->elem[i]=q1[i];
	}
}



网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...