我正在爲大學實施Insertionsort。我的代碼在理論上是有效的,但我的for循環只執行一次,而不是books.size()(它是5,我已經測試過)。我用數字5試了一下,但它不起作用,我有點絕望,因爲我似乎無法找到錯誤。For循環只執行一次?
這裏是我的代碼:
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);
}
}
圖書級的的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;
}
}
}
難道我只是瞎了嗎?
內心的'返回;'似乎可疑...... –
我與@Sparta傢伙! –
我想你檢查了比較函數在第一次迭代中返回的值是否大於零? – Raven