传入一个未排序的双向列表,node只有一个方法是判断2个node是否是相邻的,如果是返回true,否则返回false,最后要输出排好序的列表,正反序无所谓。
我想的是先判断是否为空,如果是则返回null
如果不是空的,用一个queue,Enqueue第一个node,之后外层一个while循环如果queue为空则退出循环,内层则遍历列表,如果找到了相邻的则链接这个queue里面的node,先prev再next,然后把prev指针移到前面,next指针移到后面,然后dequeue现在的node,如果列表不为空则enqueue剩余列表中第一个node
也就是用了3个指针追踪我排序列表中第一个和最后一个node,一个追踪list中第一个node。
这样的话时间复杂度是O(n^2),有没有更好的算法
还有我这个算法有没有错误,我萌新看起来没什么问题。#算法#
我想的是先判断是否为空,如果是则返回null
如果不是空的,用一个queue,Enqueue第一个node,之后外层一个while循环如果queue为空则退出循环,内层则遍历列表,如果找到了相邻的则链接这个queue里面的node,先prev再next,然后把prev指针移到前面,next指针移到后面,然后dequeue现在的node,如果列表不为空则enqueue剩余列表中第一个node
也就是用了3个指针追踪我排序列表中第一个和最后一个node,一个追踪list中第一个node。
这样的话时间复杂度是O(n^2),有没有更好的算法
还有我这个算法有没有错误,我萌新看起来没什么问题。#算法#