package leetcode;
class Solution {
static class ListNode {
int val;
ListNode next;
ListNode() {
}
ListNode(int val) {
this.val = val;
}
ListNode(int val, ListNode next) {
this.val = val;
this.next = next;
}
}
public static ListNode sortList(ListNode head) {
// 如果链表中只有一个元素,则直接返回head就行
if (head == null || head.next == null) {
return head;
}
// 进行链表元素个数的统计
int count = 0;
ListNode prev = head;
while (prev != null) {
count++;
prev = prev.next;
}
ListNode resultNode = null;
for (int i = 0; i < count; i++) {
resultNode = bubbleSortLinkedList(head);
}
return resultNode;
}
/**
* 一次冒泡排序
* @param head
* @return
*/
private static ListNode bubbleSortLinkedList(ListNode head) {
ListNode node = head;
while (node.next != null) {
if (node.val > node.next.val) {
int temp = node.val;
node.val = node.next.val;
node.next.val = temp;
}
node = node.next;
}
return head;
}
/**
* 打印链表
*/
public static void printList(ListNode head) {
while (head != null) {
System.out.print(head.val + " ");
head = head.next;
}
}
public static void main(String[] args) {
//构建链表
ListNode head = new ListNode(3);
ListNode node1 = new ListNode(5);
ListNode node2 = new ListNode(2);
ListNode node3 = new ListNode(4);
ListNode node4 = new ListNode(1);
head.next = node1;
node1.next = node2;
node2.next = node3;
node3.next = node4;
System.out.println("---------排序前-------");
printList(head);
System.out.println(" ");
head = sortList(head);
System.out.println("---------排序后-------");
printList(head);
}
}
冒泡排序—— 链表
最新推荐文章于 2022-04-01 22:44:47 发布