您的位置:首页 > 其它

2.3-2

2015-09-09 10:54 253 查看
/*不适用哨兵的MERGE*/

void Merge(int *A,int p , int q ,int r)
{
int n1 = q - p + 1;
int n2 = r - q;
int * L = new int[n1];  //new为c++中的用法,类似malloc
int * R = new int[n2];
for (int i = 0; i < n1; ++i)
{
L[i] = A[p+i-1];

}
for (int j = 0; i < n2; ++i)
{
R[j] = A[q+j];
}
int i = 0 ;
int j = 0;
int k = p - 1 ;
while((i <= n1-1)&&(j <= n2-1))
{
if(L[i] <= R[j])
{
A[k] = L[i];
i++;
}
else
{
A[k] = R[j];
j++;
}
while(i>=n1-1)
{
A[k] = L[i];
i++;
k++;
}
while(j>=n2-1)
{
A[k] = R[j];
j++;
k++;
}
delete []L;
delete []R;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: