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

📄 list.h

📁 这是归并排序的源代码
💻 H
字号:
#include <iostream>
using namespace std;
#define NUM 10
template <class T>
class List
{
public:
	List(int MaxListSize=10);
	~List(){};
	void Copy(T a[],T b[]);
	void Merge(T c[],T d[],int l,int m,int r);
	void MergeSort(T a[],int left,int right);
	
private:
	int MaxSize;
};

template<class T>
List<T>::List(int MaxListSize)
{
	MaxSize=MaxListSize;
	
}

template<class T>
void List<T>::Copy(T a[],T b[])
{
	for(int z=0;z<NUM;z++)
		b[z]=a[z];
	for(int n=0;n<NUM;n++)
		cout<<a[n]<<" ";
	cout<<endl;
}

template<class T>
void List<T>::Merge(T c[],T d[],int l,int m,int r)
{
	int i=l;          //第一段的游标
	int j=m+1;        //第二段的游标
	int k=l;          //结果的游标
	while((i<=m)&&(j<=r))
	{
		if(c[i]<=c[j])
			d[k++]=c[i++];
		else
			d[k++]=c[j++];
	}
		if(i>m)
		{
			for(int q=j;q<=r;q++)
				d[k++]=c[q];
		}
		else
		{
			for(int p=i;p<=m;p++)
				d[k++]=c[p];
		}
}


			

template<class T>
void List<T>::MergeSort(T a[],int left,int right)   //对a[left:right]中的元素进行排序
{
	T b[NUM];
	for(int c=0;c<NUM;c++)
		b[c]=a[c];
	if(left<right)
	{
		int i=(left+right)/2;
		MergeSort(a,left,i);
		MergeSort(a,i+1,right);
		Merge(a,b,left,i,right);
		Copy(b,a);
		
	}
}

⌨️ 快捷键说明

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