gpt4 book ai didi

c++ - 合并排序 - 仅对 2^n 个元素进行排序

转载 作者:太空宇宙 更新时间:2023-11-04 13:03:20 28 4
gpt4 key购买 nike

我的程序有问题。如果元素数量不同于 2^n,我的算法不想合并。它在合并之前执行操作。例如对于输入 13 5 10 8 6 22 11 3 12 20 7 9 14 17 19 1 2 18 它返回 1,3,5,6,7, 8,9,10,11,12,13,14,17,19,20,22,2,18,,它适用于 pos 从 1 到 16 然后从 17 到 18

函数

void mergeSort(int arr[], int arrSort[], int first, int mid, int last) {
int from = first;
int to = mid;
for (int i = first; i<last; i++) {
if ((arr[from] <= arr[to] && from<mid) || to >= last) {
arrSort[i] = arr[from];
from++;
} else if ((arr[to]<arr[from] && to<last) || from >= mid) {
arrSort[i] = arr[to];
to++;
}
}
for (int i = first; i<last; i++)
arr[i] = arrSort[i];
}

void mergeSortIter(int array[], int size) {
int *a = new int[size];
for (int i = 1; i <= size; i *= 2) {
showArray(array, size);
for (int j = i; j <= size; j += (2 * i))
mergeSort(array, a, j - i, j, min((j + i), size));
}
}

其余代码

https://pastebin.com/2ugS5ZpZ

要测试它,您需要编写 mi 6 [enter](6 是元素的数量)然后带有空格的元素,例如 5 6 8 2 1 3 [enter ]

最佳答案

问题很简单。我没有打印最终数组...

关于c++ - 合并排序 - 仅对 2^n 个元素进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43346421/

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