vector<int>& mergesort(vector<int> &a) {
if (a.size() == 1) return a;
int middle = a.size()/2;
vector<int>::const_iterator first = a.begin();
vector<int>::const_iterator mid = a.begin() + (middle - 1);
vector<int>::const_iterator last = a.end();
vector<int> ll(first, mid);
vector<int> rr(mid, last);
vector<int> l = mergesort(ll);
vector<int> r = mergesort(rr);
vector<int> result;
result.reserve(a.size());
int dp = 0, lp = 0, rp = 0;
while (dp < a.size()) {
if (lp == l.size()) {
result[dp] = (r[rp]);
rp++;
} else if (rp == r.size()) {
result[dp] = (l[lp]);
lp++;
} else if (l[lp] < r[rp]) {
result[dp] = (l[lp]);
lp++;
} else {
result[dp] = (r[rp]);
rp++;
}
dp++;
}
a = result;
return a;
}
它正确编译但在执行中,我得到:问题与++归并用C
This application has requested the runtime to end it in an unusual way.
这是一个奇怪的错误。
是否有什么是根本上错误的代码?
如果您提到平台,它可能会有所帮助,但错误消息听起来很像一个刚刚抛出未捕获异常的Visual C++程序。 – 2010-04-19 19:51:17