日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

常考数据结构与算法:单链表的排序

發布時間:2025/6/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 常考数据结构与算法:单链表的排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?題目描述

給定一個無序單鏈表,實現單鏈表的排序(按升序排序)。

?

輸入

[1,3,2,4,5]

返回值

{1,2,3,4,5}

public class SortInListME {public static void main(String[] args) {ListNode l1 = new ListNode(1); // 1,3,2,5,4ListNode l2 = new ListNode(3);ListNode l3 = new ListNode(2);ListNode l4 = new ListNode(5);ListNode l5 = new ListNode(4);l1.next = l2;l2.next = l3;l3.next = l4;l4.next = l5;SortInListME sortInListME = new SortInListME();ListNode resutl = sortInListME.sortInList2(l1);sortInListME.printList(resutl);}public void printList(ListNode head) {ListNode curNode = head;//循環遍歷到尾節點while (curNode != null) {System.out.print(curNode.val + " ");curNode = curNode.next;}System.out.println();}/** 遞歸將鏈表分為兩部分,每部分排好序以后,合并這兩個排好序的鏈表即可 */public ListNode sortInList2 (ListNode head) {// write code hereif (null == head || head.next == null) {return head;}ListNode p1 = head;ListNode p2 = head.next; // 1,3,2,5,4while (p2 != null && p2.next != null) {p1 = p1.next;p2 = p2.next.next;}ListNode p2Head = sortInList2(p1.next);p1.next = null;ListNode p1Head = sortInList2(head);ListNode pre = new ListNode(0);ListNode ansPre = pre;while (p1Head != null && p2Head != null) {if (p1Head.val < p2Head.val) {pre.next = p1Head;p1Head = p1Head.next;} else {pre.next = p2Head;p2Head = p2Head.next;}pre = pre.next;}pre.next = p1Head == null ? p2Head : p1Head;return ansPre.next;}/*** 下面的方法,只能替換節點中的值,不能替換實際的節點* @param head ListNode類 the head node* @return ListNode類*/public ListNode sortInList (ListNode head) {int temp;ListNode curNode = head;while(null != curNode){// 內循環從當前節點的下一個節點開始ListNode nextNode = curNode.next;while(null != nextNode){if(nextNode.val < curNode.val){temp = curNode.val;curNode.val = nextNode.val;nextNode.val = temp;}nextNode = nextNode.next;}curNode = curNode.next;}return head;} }

?

總結

以上是生活随笔為你收集整理的常考数据结构与算法:单链表的排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。