我的java选择排序算法有什么问题?
更新:我已将swap方法替换为Collection.swap方法,现在一切正常。谢谢你的帮助 我有一个选择排序算法,旨在根据篮球运动员的年龄对他们进行排序。programPlayerList是一个未排序的篮球运动员数组列表,这些球员是从一个已被网络抓取的CSV中获取的。programSortedPlayerList是一个数组列表,用于根据已排序的玩家年龄保存玩家。交换是交换玩家对象的方法。但是,当我运行代码时,播放器没有正确排序。我的代码有什么问题我的java选择排序算法有什么问题?,java,algorithm,sorting,selection,selection-sort,Java,Algorithm,Sorting,Selection,Selection Sort,更新:我已将swap方法替换为Collection.swap方法,现在一切正常。谢谢你的帮助 我有一个选择排序算法,旨在根据篮球运动员的年龄对他们进行排序。programPlayerList是一个未排序的篮球运动员数组列表,这些球员是从一个已被网络抓取的CSV中获取的。programSortedPlayerList是一个数组列表,用于根据已排序的玩家年龄保存玩家。交换是交换玩家对象的方法。但是,当我运行代码时,播放器没有正确排序。我的代码有什么问题 public static ArrayList
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;
}
publicstaticarraylistsortbyage(){
对于(int i=0;i
您对
交换的调用不会将任何内容更改为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
看起来是错误的(因为您传递了它的引用)。“swap是一个交换播放器对象的方法”-也包括这个方法的代码。“玩家未正确排序”-包括输入、实际结果和预期结果。看,我已经做了改变。还需要吗?嗨,欢迎来到SO。将你的代码直接包含在你的问题中(而不是链接到它的屏幕截图)将使潜在的回答者更容易阅读。好的,请注意。
swap(programSortedPlayerList, i, indexofmin);