2011-03-28 50 views
1

我的算法工作...幾乎...由於某種原因,排序後最後兩個元素的順序錯誤。此外,打印聲明並未告訴我first向右移動。在單獨鏈接列表上的選擇排序

public static SLL sort(SLL list) 
{ 
    SLLNode first = list.first ; 
    SLLNode second ; 

    while (first!=null) 
    { 
     System.out.println(first.data); // for seeing if first does move to the right 
     second = first.succ ; 
     while (second!=null) 
     { 
      if (second.data.compareTo(first.data)<0) 
      { 
       String temp = first.data ; 
       first.data = second.data ; 
       second.data = temp ; 
      } 
      second = second.succ ; 
     } 
     first = first.succ ; 
    } 
    return list ; 
} 

之前排序:FFF fff Hi AAA Bye Ciao

排序後:AAA Bye Ciao FFF Hi fff

我打印語句輸出FFF起初,那麼只有fff

回答

2

由於資本的ASCII值是小於的小寫字母。

ascii

+0

如果只打算比較字符串,則使用'compareToIgnoreCase'。或者,或者使用'System.String.Compare(stringA,stringB,true)','bool'參數告訴函數是否應該區分大小寫。 – Darhuuk 2011-03-28 16:04:04

+0

@N 1.1,謝謝!任何想法爲什麼印刷聲明不給我我所期望的? – raoulbia 2011-03-28 16:21:05

0
 
Also, the print statement does not show me that first moves to the right. 
System.out.print(); // for seeing if first does move to the right 

打印()語句只是說明不了什麼。

+0

現在修復了代碼 – raoulbia 2011-03-28 16:16:38