我一直在尝试解决这个问题,它正在排序我的一些节点,但不是全部,我也不知道为什么,由于某种原因,它用我的最后一个节点更改了第一个节点,也无法弄清楚。我不知道我的for循环是否有问题。另外,getValue()只是返回Node中的对象,这是我的输出
链接列表数据 9 5 8 6 10 4
链接列表数据 10 5 6 8 4 10
第一个是我的未排序列表,第二个是我试图对其进行排序
public void BubbleSort4()
{
Node<T> temp, temp2,temp3;
temp = front;
temp3 = front;
for(int i = size; i > 0; i--)
{
temp2 = temp.getNext();
Comparable comp = temp.getValue();
for(int scan = 0; scan < i-1; scan++)
{
if(comp.compareTo(temp2.getValue()) > 0)
{
temp3.setValue(temp.getValue());
temp.setValue(temp2.getValue());
temp2.setValue(temp3.getValue());
}
}
temp = temp.getNext();
}
}
答案 0 :(得分:0)
将temp2=temp2.getNext()
comp=temp.getValue()
放入您的内部for循环中,并发布完整的程序以对其进行全面处理。
public void BubbleSort4()
{
Node<T> temp, temp2,temp3;
temp = front;
temp3 = front;
for(int i = size; i > 0; i--)
{
temp2 = temp.getNext();
Comparable comp = temp.getValue();
for(int scan = 0; scan <= i-1; scan++)
{
if(comp.compareTo(temp2.getValue()) > 0)
{
temp3.setValue(temp.getValue());
temp.setValue(temp2.getValue());
temp2.setValue(temp3.getValue());
}
temp2=temp2.getNext();
comp=temp.getValue();
}
temp = temp.getNext();
}
}
我会进一步更新我的答案。不要着急投票。请发布您的完整程序,并使用它并验证我的解释。现在测试此