表达式的计算结果不是常数
来源:3-2 归并排序法的实现
慕斯卡2143342
2020-06-15
我按照你的程序写有问题
template<class T>
void __merge(T arr[], int L,int mid, int R)
{
T aux[R-L+1];
//创建临时空间
for (int i = L; i <= R; i++)
{
aux[i - L] = arr[i];
}
int i = L;
int j = mid + 1;
for (int k = L; k <= R; k++)
{
if (i > mid)
{
arr[k] = aux[j-L];
j++;
}
else if (j > R)
{
arr[k] = aux[i - L];
i++;
}
else if (aux[i - L] <= aux[j - L])
{
arr[k] = aux[i - L];
i++;
}
else
{
arr[k] = aux[j - L];
j++;
}
}
}
template<class T>
void __MergeSort(T arr[], int L, int R)//[L,R] R为最后一个元素的位置
{
if (L >= R)
return;
int mid = (L + R) / 2;
__MergeSort(arr, L, mid);
__MergeSort(arr, mid + 1, R);
__merge(arr, L, mid, R);
}
template<class T>
void MergeSort(T arr[], int n)
{
__MergeSort(arr, 0, n-1);
}
结果显示
可以帮我看看怎么回事吗?
写回答
3回答
-
由于 VS 所使用的 C++ 编译器不遵循 C++ 国际标准,所以课程使用的个别语法可能会出错,在这一小节,主要在 T aux[r-l+1]; 这个声明上。替代方式,请参考代码中的注释:12,13,14,16, 和 39 行。
可以参考课程代码中给出的注释:https://git.imooc.com/coding-71/coding-71/src/master/03-Sorting-Advance/Course%20Code%20%28C++%29/02-Merge-Sort/main.cpp
继续加油!:)
012020-06-15 -
慕设计9422144
2020-11-27
这个代码的注释没有了,老师能再发一次吗
012020-11-27 -
慕容2390529
2020-11-06
请问这个问题最后是怎么解决的呢?那个链接打不开了
032020-11-28
相似问题