-4

我在这种情况下遇到了一些麻烦。它只会按顺序正确显示第一个文件。有人看到我做错了什么吗?我已经试图弄清楚几个小时了,只是看不到我做错了什么。

public void sort() { 

    int i; //loop control
    int last; //last position in the arraylist
    int max; //position where last alphabetical filename is found

    max = 0; //largest position so far is first, since i haven't checked

    //I thought i should start at the end and work my way down
    for(last = fileList.size()-1; last >= 0; last--) {

        for(i = 0; i < fileList.size(); i++) {
            if(fileList.get(max).getFileName().compareTo(fileList.get(i).getFileName()) > 0)
                max = i;
        }

        //swap pixfile in last position with the last alphabetical
        Pixfile tempPix = fileList.get(last);
        fileList.set(last, fileList.get(max));
        fileList.set(max, tempPix);
        //i thought i would repeat until last = 0 and the arraylist is sorted
    }//end for

}
4

1 回答 1

1

内部 for 循环应该是for(int i = 0; i <= last; i++)因为您正在从尚未排序的内容中选择最好的。在最后一次之后的所有内容,您已经在外循环的先前迭代中进行了排序。

此外,您不会max在每次迭代中重置值,所以在内部 for 循环之前,写max = 0;

另外,如果你懒得写排序算法,你总是可以使用Arrays.sort()Collections.sort()

于 2013-03-21T01:52:32.437 回答