【发布时间】:2014-03-15 23:24:11
【问题描述】:
我正在尝试为 LinkedList 编写插入排序,我有一个工作方法,但速度非常慢。一个多小时来添加和排序 50,000 个元素。
public void insert(Custom c)
{
int i = 0;
for (i = 0; i < list.size(); i++)
{
if(list.get(i).compareTo(c) > 0 )
{
list.add(i,c);
return;
}
}
list.add(c);
}
我知道我可以使用 Collections.Sort,但对于这项任务,我需要编写自己的 LinkedList。我不是要求一个完整的解决方案,只是一些指针。
【问题讨论】:
-
这可能是因为你一直在调用
list.get(i),这是一个 O(n) 操作。 -
多久发送一次
list.add(e);?如果它经常发生,您可以尝试先将 e 与最后一个条目进行比较。 -
@MrLore 8 次 5000 个元素
-
@user3424480 无论如何,这可能值得先尝试一下,这仍然是对
compareTo()的调用减少了 39,992 次。
标签: java sorting insertion-sort