java - 我的 SelectionSort 方法不起作用。为什么?

标签 java sorting selection linked-list

我正在尝试在我自己编写的双向链表版本中使用选择排序算法。对于这个问题,我们可以假设除了我发布的代码之外,其他地方没有错误(至少没有与问题相关的错误)。我已经做了很多测试。

这是我的方法:

public void selectionSort(){

    ListItem front = head;
    ListItem current;
    T currentLowest;
    T potentialLowest;
    int lowestIndex = 0;
    for (int a = 0; a<count-1; a++){
        System.out.println("a: "+a);
        currentLowest = (T) front.content;
        front = front.next;
        current = front.next;
    for(int i = a+1; i<count; i++){
        System.out.println("i: "+i);
**(29)**    potentialLowest = (T) current.content;
        if (potentialLowest.compareTo(currentLowest)==-1)
        {
            currentLowest = (T) current.content;
            lowestIndex = i;
        }
        if(current.next == null)break;

        current = current.next;
    }
    System.out.println("swapped"+a+","+lowestIndex);
    swap(a, lowestIndex);
}

}

它正在对 100 个整数的列表进行排序。这是我在第 29 行收到空指针之前的最后一位输出(已标记)。

交换95,97

答:96 我:97 我:98

交换96,97

答:97 我:98

交换97,97

答:98 我:99 (空指针)

我之前就做过这个工作,但它的优化非常糟糕。做了一些改变后,我坚持了下来。有什么想法吗?

感谢您的宝贵时间。

最佳答案

您正在尝试访问 null 元素的内容。当您位于最后一个元素时,当您将其设置为下一个时,“当前”将为空。

我想我有点太累了,无法提供修复程序,但是您应该能够将旧的(工作)代码与它进行比较并找到修复程序。

关于java - 我的 SelectionSort 方法不起作用。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5828512/

相关文章:

java - 官方教程代码在Eclipse中出现红色波浪线不允许我编译

c - 如何在线性时间内对 int 数组进行排序?

mysql - 优化wordpress mysql数据库文件排序415885行

c# - 在具有扩展选择模式的列表框中单击取消选择

Java 正则表达式速成

java - 同步对 Volatile 字段的写入访问(廉价读写 block )

java - 相当于 javac ant 任务的命令行?

linux - Unix : how does a "./process | sort" work?

java - GWT ListBox 默认未选中

c++ - 使用模板的选择排序函数没有匹配的函数调用(C++)