gpt4 book ai didi

Java Bubblesort 仅交换第一个数组项

转载 作者:行者123 更新时间:2023-11-29 03:40:06 27 4
gpt4 key购买 nike

我的冒泡排序代码只交换第一个数组项。所有其他项目都保留为 0。我认为我的嵌套循环是错误的,或者我还没有能够正确诊断它。所以这是我的代码。

    public void swap(int i, int j) {

int temp;

temp = i;
i = j;
j = temp;
}


public void sortArray(int [] sourceArray, int [] targetArray, int allArraySize){

for(int i = 0; i < allArraySize; i++) {
targetArray[i] = sourceArray[i];
for (i = 0; i < allArraySize; i++) {
for(int j = i+1; j < allArraySize;j++) {
if(targetArray[i] > targetArray[j]) {
swap(i, j);
}
}

}

}
}

非常感谢您的反馈。我(显然)是编程新手。我已经将我的代码更改为此。

public void sortArray(int [] sourceArray, int [] targetArray, int allArraySize){
int temp;

for(int i = 0; i < allArraySize; i++) {
targetArray[i] = sourceArray[i];
for (i = 0; i < allArraySize; i++) {
for(int j = i+1; j < allArraySize;j++) {
if(targetArray[i] > targetArray[j]) {
temp = targetArray[i];
targetArray[i] = targetArray[j];
targetArray[j] = temp;
}
}

}

}
}

结果仍然只交换了 1 个项目,但现在是最后一个。如果有人仍然能够提供帮助,我将不胜感激。

最佳答案

原因详见this post .总之,java 按值传递参数,您的 swap 方法仅交换局部变量,但对 sortArray 方法中的变量没有影响。

一个简单的解决方法是将 swap 的代码直接包含在您的 if 中。注意:我没有检查你的其余代码。例如,您可能打算交换数组中的元素而不是索引。

关于Java Bubblesort 仅交换第一个数组项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13554164/

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