码迷,mamicode.com
首页 > 其他好文 > 详细

归并排序

时间:2014-09-09 11:59:58      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:blog   io   ar   for   art   div   log   c   amp   

自己写的

#include<stdio.h>
void Merger(int num[],int start,int end)
{
	int k,i,j,mid=(start+end)/2;
	int leftlen=mid-start+1,rightlen=end-mid;
	int totallen=end-start+1;
	int *total=new int[totallen];
//	int *left=new int[leftlen];
	//int *right=new int[rightlen];
//	for(i=start,j=0;i<=mid;i++)
	//	left[j++]=num[i];
	//for(i=mid+1,j=0;i<=end;i++)
		//right[j++]=num[i];
	for(k=0,i=start,j=mid+1;i<=mid && j<=end;)
	{
		if(num[i]<num[j])
		{
			total[k]=num[i];
			k++;
			i++;
		}
		else
		{
			total[k]=num[j];
			k++;
			j++;
		}
	}
	while(i<=mid)
		total[k++]=num[i++];
		
	while(j<=end)
		total[k++]=num[j++];
	for(k=1,i=start;k<=totallen;k++,i++)
		num[i]=total[k-1];
		
	delete []total;
}

void MeSort(int num[],int start,int end)
{
	if(start==end)
		return;
	int mid=(start+end)/2;
	MeSort(num,start,mid);
	MeSort(num,mid+1,end);
	Merger(num,start,end);
}

void main()
{
	int num[]={72,18,53,36,48,31,40};
	int len=sizeof(num)/sizeof(int);
	int k;
	MeSort(num,0,len-1);
	for(k=0;k<=len-1;k++)
		printf("%d ",num[k]);
}

  

归并排序

标签:blog   io   ar   for   art   div   log   c   amp   

原文地址:http://www.cnblogs.com/notlate/p/3961872.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!