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

我的java选择排序算法有什么问题?,java,algorithm,sorting,selection,selection-sort,Java,Algorithm,Sorting,Selection,Selection Sort,更新:我已将swap方法替换为Collection.swap方法,现在一切正常。谢谢你的帮助 我有一个选择排序算法,旨在根据篮球运动员的年龄对他们进行排序。programPlayerList是一个未排序的篮球运动员数组列表,这些球员是从一个已被网络抓取的CSV中获取的。programSortedPlayerList是一个数组列表,用于根据已排序的玩家年龄保存玩家。交换是交换玩家对象的方法。但是,当我运行代码时,播放器没有正确排序。我的代码有什么问题 public static ArrayList

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

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

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);