【发布时间】:2022-12-03 06:55:52
【问题描述】:
我知道我应该使用向量,但我想在动态分配数组方面做得更好。我不确定哪里出错了。我正在创建一个新数组并将其删除。
void Merge(int *arr,int begin, int mid, int end){
int*arrB = new int[mid - begin + 1];
int i = begin;
int j = mid+1;
int k = 0;
while(i <= mid && j <= end){
if(arr[i] <= arr[j]){
arrB[k] = arr[i];
k++;
i++;
}
else {
arrB[k] = arr[j];
k++;
j++;
}
}
while(i <= mid){
arrB[k] = arr[i];
i++;
k++;
}
while(j <= end){
arrB[k] = arr[j];
j++;
k++;
}
k = 0;
for(int i = begin; i <= end; i++){
arr[i] = arrB[k];
s.setData(arr);
k++;
}
delete[] arrB; //error here
}
我试过将 n-1 的 <= 替换为 <,我试过切换到矢量,这也给了我一个错误。我也试过看类似的问题。
【问题讨论】: