最简单的冒泡排序(升序),多年没写,重新复习了一下,不过这次用的是单链表,而且是java,不过和C也没什么区别:
图片仅供自己记忆,路人莫喷
代码如下:
public static ListNode sortList(ListNode head) {
ListNode start , temp , prenode;
boolean flag = true;
while(true)
{
flag = true;
if(head.val>head.next.val)
{
start = head.next;
prenode = head.next;
temp = head.next.next;
head.next.next = head;
head.next = temp;
}else{
prenode = head;
start = head;
head = head.next;
}
while(head.next != null)
{
if(head.val>head.next.val)
{
temp = head.next.next;
prenode.next = head.next;
head.next.next = head;
head.next = temp;
prenode = prenode.next;
flag = false;
}else{
prenode = head.next;
head = head.next;
}
}
if(flag == true)break;
head = start;
}
System.out.print(start.val);
return start;
}
public static void main(String args[]){
ListNode l = new ListNode(5);
ListNode ll = new ListNode(2);
ListNode lll = new ListNode(4);
l.next = ll;
ll.next = lll;
sortList(l);
}
不过冒泡的时间复杂度是O(N^2),虽然稳定但是效率不高,接下来继续研究时间复杂度更低的排序