⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mergesort.cpp

📁 合并排序算法实现
💻 CPP
字号:
# include "iostream.h"
# include "time.h"
# include "stdlib.h"

void merge(int *p,int low,int mid,int high)
{
	int *q;
	int x=high-low+1;
	q=new int[x];

	int s=low;
	int	t=mid+1;
	int	k=0;
	while(s<=mid && t<=high)
	{
		if(p[s-1]<=p[t-1])
		{
			q[k]=p[s-1];
			s++;
		}
		else
		{
			q[k]=p[t-1];
			t++;
		}
		k++;
	}
	if(s==(mid+1))
	{
		for(;k<x&&t<=high;k++)
		{
			q[k]=p[t-1];
			t++;
		}
	}
	else
	{
		for(;k<x&&s<=high;k++)
		{
			q[k]=p[s-1];
			s++;
		}
	}

	
	for(k=0;low<=high;low++,k++)
	{
		p[low-1]=q[k];
	}
	delete []q;
}

void mergesort(int *a,int low,int high)
{
	int mid;
	if(low<high)
	{
		mid=(low+high)/2;
		mergesort(a,low,mid);
		mergesort(a,mid+1,high);
		merge(a,low,mid,high);
	}
}

void main()
{
	int *m;
	int i;
	int num;
	int chose;
	char ch='y';

	cout<<"       合并排序!      "<<endl;
    
	while(ch=='y'||ch=='Y')
	{
		cout<<"请输入您想随机生成的数组的长度:";
		cin>>num;
	
		m=new int[num];

		cout<<"请选择数组的生成方式:"<<endl;
		cout<<"1.随机生成"<<endl;
		cout<<"2.手动输入"<<endl;
		cin>>chose;
		if(chose==1)
		{
			cout<<"随机生成数组:" << endl;
			srand((unsigned)time(NULL));                
			for(i=0;i<num;i++)
			{
				m[i] = rand() % 100;
				cout<<" "<<m[i]<<" " << endl;
			}
		}	
		else if(chose==2)
		{
			cout<<"请输入并以空格隔开:";
			for(i=0;i<num;i++)
			{
				cin >> m[i];
			}
		}
		
		mergesort(m,1,num);

		cout<<"排序后的数组为:"<<endl;
		for(i=0;i<num;i++)
		{
			cout<<" "<<m[i]<<" " << endl;
		}
		delete []m;
		cin.ignore();
		cout<<endl<<"是否继续(y/n):"<<endl;
		cin.get(ch);
	}
}
			

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -