【发布时间】:2024-05-04 16:10:04
【问题描述】:
我正在为大学实施插入排序。我的代码在理论上有效,但我的 for 循环只执行一次,而不是 books.size() (这是 5,我已经测试过了)。我尝试使用数字 5,但它不起作用,我有点绝望,因为我似乎找不到错误。
这是我的代码:
static void sort(LinkedList<Book> books)
{
int i;
for ( i = 0; i < books.size(); i++)
{
Book temp = books.get(i);
books.remove(i);
for (int j = 0; j < books.size(); j++) {
if (books.get(j).compareTo(temp) > 0) {
books.add(j, temp);
return;
}
}
books.add(temp);
}
}
Book-Class 的 compareTo 函数如下所示:
public int compareTo(Book other)
{
int iAutor = autor.compareTo(other.getAutor());
if (iAutor != 0)
return iAutor;
else
{
int iTitel = titel.compareTo(other.getTitel());
if (iTitel != 0)
return iTitel;
else
{
if (this.auflage < other.getAuflage())
return -1;
else if (this.auflage > other.getAuflage())
return 1;
else
return 0;
}
}
}
我只是瞎了吗?
【问题讨论】:
-
那个内部
return;似乎很可疑...... -
我和那个@Sparta 家伙在一起!
-
我猜你检查了比较函数在第一次迭代中返回的值是否大于零?
-
@Sparta 好吧,当您编码累了时会发生这种情况.__。你是对的,就是这样。但是如果我用
break交换它,它会添加每个条目两次。我可以在不将其外包给单独的insert函数的情况下做些什么吗? -
@Valentin 向我们解释您想要实现的目标。我们甚至可能会向您建议一些逻辑见解..
标签: java for-loop insertion-sort