一、归并排序的步骤
1、将要排序的一组数据拆成两组元素个数相等的数组,并对每一个数组继续拆分,直到拆分后的每个数组的元素个数是1为止。
2、将相邻的两个子组合并成一个有序的大组
3、不断的重复步骤,直到最终只有一个组为止
步骤图如下:
二、代码和运行结果:
#include <iostream>
using namespace std;
template <class T>
class Merge
{
public :
Merge(T arry[], int num)
{
pAssist = new T[num];
sort(arry,num);
}
~Merge()
{
delete[] pAssist;
}
private:
void sort(T arry[], int size);
void sort(T arry[], int lo, int h);
void combine(T arry[],int lo,int mid,int h); //合并
T* pAssist;
};
template <class T>
void Merge<T>::sort(T arry[], int lo,int h)
{
if (l