void merge_sort(int *A,int x,int y,int *T){ if(y-x>1){ int m=x+(y-x)/2; int p=x,i=x,q=m; merge_sort(A,x,m,T); merge_sort(A,m,y,T); while(p<m || q<y){ if(q>=y || (A[p]<=A[q] && p<m))T[i++]=A[p++]; else T[i++]=A[q++]; } for(i=x;i<y;i++)A[i]=T[i]; }}实例:
int main()
{
int k[]={4,6,2,8,9,3};
int *p;
p=new int[6];
marge_sort(k,0,6,p);
for(int i=0;i<6;i++)cout<<k[i]<<‘ ‘;
cout<<endl;
}
背下来了,啊哈哈!!!
算法理解了,但下一次碰到相似的题目又不会,好苦恼~_~
时间: 2024-10-04 00:54:59