Bağlı bir listeyi sıralamak için bir kabarcık sıralama algoritması yazdım. Java'ya yeni başladım ve veri yapılarını öğrenmeye çalışıyorum. İkinci elementimin neden doğru sıralanmadığı konusunda kafam karıştı. Bir kabarcık tür kötü durum senaryosu O (n) olduğunu biliyorum yanındaJava'da bağlantılı bir listeyi sıralama
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;
}
}
}
Bu
DÜZENLEME Ben
List after construction: [ 3 6 9 4 12 15 ] After sorting: [ 3 4 9 12 6 15 ]
alıyorum çıkıştır. Daha iyi bir zaman karmaşıklığına sahip olmak için bağlantılı bir listede mergesort kullanabilir miyim? Teşekkürler!
'SListNode' nedir? Uygulamayı yayınlamayı düşünün. – paislee
Doğrudan yanıtlamadan, araştırmanın yolu her takastan sonra ve ne olduğunu görmek için her bir dış döngüden sonra listenizi System.out.println() olacaktır. – user949300