我寫了一個氣泡排序算法來對鏈表進行排序。我是一名Java初學者,並試圖學習數據結構。我很困惑爲什麼我的第二個元素沒有正確排序。用Java對鏈表進行排序
編輯
class SListNode {
Object item;
SListNode next;
SListNode(Object obj) {
item = obj;
next = null;
}
SListNode(Object obj, SListNode next) {
item = obj;
this.next = next;
}
}
public class SList {
private SListNode head;
private SListNode temp;
public void sortList() {
SListNode node = head,i,j;
head = node;
i = node;
j = node.next;
while(i.next != null) {
while(j.next != null) {
if((Integer)i.item < (Integer)j.item) {
temp = i.next;
i.next = j.next;
j.next = temp;
}
j = j.next;
}
i = i.next;
}
}
}
這是我得到
List after construction: [ 3 6 9 4 12 15 ]
After sorting: [ 3 4 9 12 6 15 ]
輸出此外,我知道冒泡排序的最壞情況是O(n )。我可以在鏈表上使用mergesort來獲得更好的時間複雜度嗎?
謝謝!
什麼是'SListNode'?考慮發佈實施。 – paislee
如果不直接回答,調查的方法是在每個交換之後以及每個外部循環之後查看System.out.println()列表以查看發生了什麼。 – user949300