java排序没有明显访问节点的LinkedList?
大家好。我希望有人能解释一下。我有一个家庭作业问题,要求我对给定的LinkedList进行排序,并返回排序后的列表,如下所示:
private LinkedList<T> list;
// constructor
public SortedLinkedList(LinkedList<T> in){
}
现在,我已经了解了我认为的逻辑(我可以使用一个简单的合并排序),但是我看不到访问节点本身的方法。我想到的是quicksort的一个微小变化,即使用头部作为轴心,将linkedlist排序为两个较小的,重复,然后合并。。。但是我想知道我是否可以用其他的方法。然而,由于我们不能真正访问任何私有节点,我没有什么好主意
由于明显的原因,我们不允许使用集合或数组对其进行排序。我们只允许使用Java LinkedList和单个私有字段
谢谢你的意见
编辑:如果我能帮上忙,我宁愿避免使用toArray
# 1 楼答案
没关系,你不需要任何私人访问。威胁列表就像威胁列表一样——你有获取和设置方法
<>非常重要的是考虑链表在随机访问中是慢的!因此,您需要找到一种排序,它可以处理彼此相邻的节点在这种情况下,像“气泡排序”这样的方法可能是最有效的。 不是泡沫。名称不同,需要cmp和交换neigbourh单元格。也许吧
# 2 楼答案
由于不允许使用其他类,我建议您使用冒泡排序。它更简单,性能也没那么差。以下是如何使用它: