Java 按升序将元素插入LinkedList
我试图找到一种有效的方法,在始终保持升序的同时,将Java 按升序将元素插入LinkedList,java,list,Java,List,我试图找到一种有效的方法,在始终保持升序的同时,将Integer元素插入java.util.LinkedList列表。例如: 5->[]=>[5] 1 -> [5] => [1, 5] 3 -> [1, 5] => [1, 3, 5] 0 -> [1, 3, 5] => [0, 1, 3, 5] 这是理解链表遍历在链接数据结构中的影响的纯理论问题,请参阅。我对批量插入Integer元素或在末尾对LinkedList排序不感兴趣 我可以使用ListIterator,但是它需要两
Integer
元素插入java.util.LinkedList
列表。例如:
5->[]=>[5]
1 -> [5] => [1, 5]
3 -> [1, 5] => [1, 3, 5]
0 -> [1, 3, 5] => [0, 1, 3, 5]
这是理解链表遍历在链接数据结构中的影响的纯理论问题,请参阅。我对批量插入Integer
元素或在末尾对LinkedList
排序不感兴趣
我可以使用ListIterator
,但是它需要两个方法调用。我必须先执行set()
,然后执行add()
,比如:
var numbers = new Integer[] { 5, 1, 3, 0, ... };
var list = new LinkedList<Integer>();
outer:
for (Integer num : numbers) {
var it = list.listIterator();
while (it.hasNext()) {
var el = it.next();
if (num <= el) {
it.set(num);
it.add(el);
continue outer;
}
}
it.add(num);
}
var numbers=newinteger[]{5,1,3,0,…};
var list=newlinkedlist();
外部:
for(整数编号:数字){
var it=list.listIterator();
while(it.hasNext()){
var el=it.next();
if(numAdd方法可以接受两个输入
void add(int index, Object element)
执行二进制搜索、查找位置、使用add方法……您的实际用例是否导致无法简单地对数字进行排序?我不认为这会比您当前的实现效率更低。@ernest_k没有实际的用例,这是理解链接数据中列表遍历的重要性的一个理论问题结构,看,我似乎很清楚,链表是解决这个问题的错误选择。而从你想要坚持的事实来看,我看不出你的分析结果会是什么。但那可能只是我。@ernest_k你能解释一下为什么LinkedList
显然是解决这个问题的错误选择吗?我链接的视频显示,这个问题并不明显,LinkedList
的插入操作比ArrayList
更复杂,但是ArrayList
对于大型N
几乎更快。我想知道是什么让它变得明显?如果你不必使用链接列表,你可能会使用它方法类似于树集、优先级队列或其他排序集合。我并没有将您的解决方案与使用数组列表进行对比,这是一个不同的问题。如果您的练习是在链表的顶部实现类似的内容,那么我仍然不明白在没有将其与其他数据结构进行比较。同样,这可能只是我。关于二进制搜索的观点很好,谢谢。欢迎…-)