双链列表上的冒泡排序问题

时间:2019-04-25 03:35:16

标签: java

我一直在尝试解决这个问题,它正在排序我的一些节点,但不是全部,我也不知道为什么,由于某种原因,它用我的最后一个节点更改了第一个节点,也无法弄清楚。我不知道我的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();
      }
  }

1 个答案:

答案 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();
  }

}

我会进一步更新我的答案。不要着急投票。请发布您的完整程序,并使用它并验证我的解释。现在测试此