2014-11-05 72 views
1

我有我的冒泡的麻烦。它在结束之前循环一次。它接受一个输入文件,其中包含各种名称和年龄并对它们进行分类。到目前为止,它打印出:冒泡与LinkedList的

Stella is 11 years old. 
Fred is 88 years old. 
George is 22 years old. 
Violet is 33 years old. 
Rose is 77 years old. 
Bob is 66 years old. 
Lena is 55 years old. 
Billy is 44 years old. 
Nellie is 99 years old. 

时,我想它打印出来:

Stella is 11 years old. 
George is 22 years old. 
Violet is 33 years old. 
Billy is 44 years old. 
Lena is 55 years old. 
Bob is 66 years old. 
Rose is 77 years old. 
Fred is 88 years old. 
Nellie is 99 years old. 

当前代码:

public void bubbleSort() 
    { 
    PersonNode previous = head; 
    PersonNode current = head.getNext(); 
    boolean swap = true; 
    int j = 0; 

    while(swap) 
    { 
    swap = false; 

    while(previous != null) 
    {   
     if(previous.getNext() != null && previous.getAge() > previous.getNext().getAge()) 
     { 
      String tempName = previous.getName(); 
      Integer tempAge = previous.getAge(); 
      current = previous.getNext(); 
      previous.setName(current.getName()); 
      previous.setAge(current.getAge()); 
      current.setName(tempName); 
      current.setAge(tempAge); 
      swap = true; 
     } 
    previous = previous.getNext(); 
    } 

    } 

任何帮助表示赞赏。

回答

1

的代码只有“泡沫”一个值,你需要从一开始就重复这个过程,直到没有更多的交换发生。这是一个单线的变化。

public void bubbleSort() 
{ 
    PersonNode previous = head; 
    PersonNode current = head.getNext(); 
    boolean swap = true; 

    while(swap) 
    { 
    swap = false; 
    previous = head; /* restart */ 
    while(previous != null) 
    {   
     if(previous.getNext() != null && previous.getAge() > previous.getNext().getAge()) 
     { 
      String tempName = previous.getName(); 
      Integer tempAge = previous.getAge(); 
      current = previous.getNext(); 
      previous.setName(current.getName()); 
      previous.setAge(current.getAge()); 
      current.setName(tempName); 
      current.setAge(tempAge); 
      swap = true; 
     } 
    previous = previous.getNext(); 
    } 

    } 
+0

感谢,这样一个简单的错误。 – Jonahlol 2014-11-05 20:47:50

+0

很乐意帮忙,请接受的答案,如果它固定您的问题,谢谢。 – ryanpattison 2014-11-05 20:57:54