【发布时间】:2016-01-29 03:41:49
【问题描述】:
我似乎无法弄清楚我的代码有什么问题。正如标题所说,我正在尝试使用整数向量实现归并排序。
标题:
using Val = int;
using Container = std::vector<Val>;
using Iter = long;
void mergeSort(Container& arr, Iter start, Iter end);
.CPP(我已经在文件中包含了merge的定义,只是这里没有画出来)
void mergeSort(Container& arr, Iter start, Iter end) {
if (start >= end) return;
int mid = (start + end) / 2;
mergeSort(arr, start, mid);
mergeSort(arr, mid + 1, end);
merge(arr, start, end, mid);
}
void merge(Container& arr, Iter start, Iter end, Iter mid)
{
int len = end - start + 1;
int x = 0;
Container temp;
temp.resize(arr.size());
int i, j, k;
i = start;
k = start;
j = mid + 1;
while (i <= mid && j <= end)
{
if (arr[i] < arr[j])
{
temp[k++] = arr[i++];
}
else
{
temp[k++] = arr[j++];
}
}
while (i <= mid) temp[k++] = arr[i++];
while (j <= end) temp[k++] = arr[j++];
for (k = 0; k < len; k++) arr[k + start] = temp[k];
}
非常感谢!
【问题讨论】:
-
输出是什么?什么是预期的输出?您认为错误出现在代码的哪个区域?
-
您是否尝试过在调试器中逐行执行代码?