gpt4 book ai didi

java - 只想打印一次数组 - MergeSort

转载 作者:行者123 更新时间:2023-11-30 04:23:43 26 4
gpt4 key购买 nike

遇到合并排序问题。对数组进行排序后,我希望它只打印完全排序的数组,而不是每次传递。我的代码如下。我在数组似乎已排序后运行 printArray(intArray) 。也许我把它放在错误的地方?您可以在最后的 mergesortComparisons 函数中看到它。

private static int merge(int[] intArray, int first, int n1, int n2) {

int[] temp = new int[n1+n2];
int copied = 0, copied1 = 0, copied2 = 0;
while((copied1 < n1) && (copied2 < n2)){
if (intArray[first + copied1] < intArray[first + n1 + copied2])
temp[copied++] = intArray[first + copied1++];
else
temp[copied++] = intArray[first + n1 + copied2++];
}

while(copied1 < n1)
temp[copied++] = intArray[first + copied1++];
while(copied2 < n2)
temp[copied++] = intArray[first + n1 +copied2++];

for(int i = 0; i < n1+n2; i++) {
numComparisons++;
intArray[first + i] = temp[i];
}

return first;
}

public static int mergeSortComparisons(int[] intArray, int first, int last){
int n1, n2;
if (last > 1){

n1 = last/2;
n2 = last - n1;

mergeSortComparisons(intArray, first, n1);
mergeSortComparisons(intArray, first + n1, n2);

merge(intArray, first, n1, n2);
}

printArray(intArray);
return numComparisons;
}

最佳答案

由于您递归地调用 mergeSortComparisons,因此每次合并后的每次传递都会发生对 printArray 的调用。如果您将 intArray 从 mergeSortComparisons 方法返回到最初调用它的代码,您应该能够从那里调用 printArray 并且它只会执行一次。

关于java - 只想打印一次数组 - MergeSort,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16389712/

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