用分治法求解某集合内元素的合并排序
#include <iostream.h>
#include <string.h>
template <class T>
class SortableList
{
public:
void Merge(int left,int mid,int right);
void MergeSort(int left,int right);
void SetValue();
void Print(){cout<<a;}
int GetL(){str=sizeof(a)/sizeof(a[0]);return str;}
private:
int left,right,mid,str;
int *a;
};
template <class T>
int SortableList<T>::SetValue()
{
int i;
for(i=0;i<10;i++)
cin>>a;
}
template <class T>
void SortableList<T>::Merge(int left,int mid,int right)
{
T*temp=new T[right-left+1];
int i=left,j=mid+1,k=0;
while((i<=mid)&&(j<=right))
if(l[i]<=l[j]) temp[k++]=l[i++];
else temp[k++]=l[j++];
while(i<=mid) remp[k++]=l[i++];
while(j<=right) temp[k++]=l[j++];
for(i=0,k=left;k<=right;)
l[k++]=temp[i++];
}
template <class T>
void SortableList<T>::MergeSort(int left,int right)
{
if(left<right)
{
int mid=(left+right)/2;
MergeSort(left,mid);
MergeSort(mid+1,right);
Merge(left,mid,right);
}
}
void main()
{
SortableList<int> m;
m.SetValue();
// cout<<k<<endl;
// m.MergeSort(
}
能力有限,不知道如何进行下去了,还望指教,非常感谢啊~~