void MergeSort(int *list1,int length)
{
int i,lmin,lmax,rmin,rmax,next;
int *tmp=new int[length];
if(tmp==NULL)
cout<<"Wrong!\n";
for(i=1;i<length;i*=2)
{
for(lmin=0;lmin<length-i;lmin=rmax)
{
rmin=lmax=lmin+i;
rmax=lmax+i;
if(rmax>length)
rmax=length;
next=0;
while(lmin<lmax&&rmin<rmax)
tmp[next++]=list1[lmin]>list1[rmin]?list1[rmin++]:list1[lmin++];
while(lmin<lmax)
list1[--rmin]=list1[--lmax];
while(next>0)
list1[--rmin]=tmp[--next];
}
}
delete []tmp;
return ;
}
非递归的归并排序
最新推荐文章于 2024-01-16 23:07:55 发布