合并排序

合并排序

//合并排序 
#include<iostream>
#include<cmath>
using namespace std;
 
int num[100];
 
void print(int num[],int len)
{
	for(int i=0;i<len;i++)
	{
			cout<<num[i]<<" ";
	}	
	cout<<endl;
}
 
void merge(int num[],int beg,int mid,int end)
{
	int temp[100];
	int t=beg;
	int i=beg,j=mid+1;
	while(i<=mid&&j<=end)
	{
		if(num[i]<num[j])	
			temp[t++]=num[i++];
		else
			temp[t++]=num[j++];
	}
	while(i<=mid)
		temp[t++]=num[i++];
	while(j<=end)
		temp[t++]=num[j++];
	for(int i=beg;i<=end;i++)
		num[i]=temp[i];
}
 
void mergeSort(int num[],int beg,int end)
{
	if(beg==end)
		return;
	int mid=(beg+end)/2;
	mergeSort(num,beg,mid);
	mergeSort(num,mid+1,end);
	merge(num,beg,mid,end);	
}
 
 
int main()
{
        int len;
        while(cin>>len)
        {
              for(int i=0;i<len;i++)
              cin>>num[i];
              mergeSort(num,0,len-1);
              print(num,len);
        }
        return 0;
}

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注