经典的归并算法是每次n/2分,然后再合并排序。而本算法是将n维数组每次分为根号n后递归后归并排序,思想和二路归并类似,但稍有不同
#include <iostream>
#include <cmath>
using namespace std;
template <class T>
class SortableList
{
public:
SortableList(int m)
{
n = m;
}
void MergeSort();
void Merge(int left, int mid, int right);
void Input();
void Init();
void Output();
private:
void MergeSort(int left, int right);
T l[1000];//输入的数组值
T a[1000];//实际排序对象
int n;
};
template<class T>
void SortableList<T>::Input()
{
for(int i = 0; i < n; i++)
cin >> l[i];
}
template<class T>
void SortableList<T>::Init()
{