gpt4 book ai didi

c++ - 无法弄清楚我的合并排序 C++ 有什么问题

转载 作者:太空宇宙 更新时间:2023-11-04 12:50:22 25 4
gpt4 key购买 nike

<分区>

老实说,我不知道我做错了什么。我已经在调试器中盯着这个东西看了好几个小时了,它似乎正确地将元素复制到 aux 数组,但后来出了点问题,我不知道是什么。程序编译,只是元素没有正确排序。

 void merge(int lo, int mid, int hi) {
T* aux = new T[(hi - lo) + 1];
int i = lo;
int j = mid + 1;

for (int k = 0; k <= (hi - lo); k++) {
if (i > mid) {
aux[k] = arrayData[j];
j++;
}
else if (j > hi) {
aux[k] = arrayData[i];
i++;
}
else if (arrayData[i] < arrayData[j]) {
aux[k] = arrayData[i];
i++;
}
else {
aux[k] = arrayData[j];
j++;
}
}
for (i = lo; i <= hi; i++) {
arrayData[i] = aux[i - lo];
}
delete[] aux;
}

void mergeSort(int lo, int hi) {
if (lo >= hi)
return;
int mid = (lo + hi) / 2;

mergeSort(lo, mid);
mergeSort((mid + 1), hi);
merge(lo, mid, hi);
}

T 是我在代码的其他地方建立的模板。至于arrayData,都是我类的。 arrayData 中的元素正在四处移动,只是由于某种原因不正确,我 100% 确定问题出在上面的代码中。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com