题目
冒泡法实现链表排序
public class ListNode{
int val;
ListNode next;
public ListNode(int val) {
this.val = val;
}
}
分析
冒泡排序,每次扫描一趟获得最大的值。此题注意链表节点的交换。
public ListNode Bubble(ListNode root){
ListNode Head = root;
int length = 0;
while (root != null){
root = root.next;
length++;
}
int index = 0;
while (index < length -1){
ListNode cur = Head;
ListNode pre = null;
for (int i = 0; i < length - 1 - index; i++) {
ListNode temp = cur.next;
if (temp.val < cur.val){//exchange
cur.next = temp.next;
temp.next = cur;
if (pre == null){//头指针情况
pre = temp;
Head = pre;
}else {
pre.next = temp;
pre = temp;
}
}else {
pre = cur;
cur = temp;
}
}
index++;
}
return Head;
}