gpt4 book ai didi

java - 我的java选择排序算法有什么问题?

转载 作者:行者123 更新时间:2023-12-01 18:40:28 24 4
gpt4 key购买 nike

更新:我已将 swap 方法替换为 Collection.swap 方法,现在一切正常。感谢您的帮助。

我有一个选择排序算法,旨在根据篮球运动员的年龄对他们进行排序。 programPlayerList 是从网络抓取的 CSV 中获取的未排序的篮球运动员数组列表。 programSortedPlayerList 是一个数组列表,用于根据球员的年龄排序来保存他们。 swap 是交换玩家对象的方法。但是,当我运行代码时,玩家尚未正确排序。我的代码有什么问题吗?

public static ArrayList<Player> sortByAge() {   
for(int i = 0; i < programPlayerList.size(); i++) {
programSortedPlayerList.add(programPlayerList.get(i));
}

for(int i = 0; i < programSortedPlayerList.size()-1; i++) {
int indexofmin = i;
for(int j = i+1; j < programSortedPlayerList.size(); j++) {
if(programSortedPlayerList.get(j).getAge() < programSortedPlayerList.get(indexofmin).getAge()) {
indexofmin = j;
}
}
swap(programSortedPlayerList.get(i), programSortedPlayerList.get(indexofmin));
}
return programSortedPlayerList;
}

Swap Method Printing age Algorithm output

最佳答案

您对 swap 的调用不会对 programSortedPlayerList 进行任何更改。

传递给 swap 的参数不会被它修改。一旦将新对象分配给任一参数变量,您就只有局部效果。调用代码不会看到传递的对象有任何更改。这就是“按值调用”的原理:对象(引用)被传递给 swap,但无论 swap 做什么,它都无法更改调用者的引用。

为了更改 programSortedPlayerList 中元素的顺序,您必须在某个时刻调用 programSortedPlayerList.set

例如:

public static void swap(ArrayList<Player> playerList, int i, int j) {
Player temp = playerList.get(i);
playerList.set(i, list.get(j));
playerList.set(j, temp);
}

...并调用为:

swap(programSortedPlayerList, i, indexofmin);

关于java - 我的java选择排序算法有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59941703/

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