最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java 利用遞歸實現(xiàn)鏈表的歸并排序

 更新時間:2020年09月14日 14:17:57   作者:CHAN_傑  
這篇文章主要介紹了Java 如何利用遞歸實現(xiàn)鏈表的歸并排序,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下

利用歸并排序,我們可以將時間復雜度降至O(nlogn), 并且我們是對鏈表進行排序,可以通過修改引用來更改節(jié)點順序,無需像數(shù)組一樣開辟而外的空間。

利用遞歸實現(xiàn)鏈表的歸并排序有兩個環(huán)節(jié):

分割cut環(huán)節(jié):

我們可以利用fast, slow快慢雙指針實現(xiàn)鏈表的分割, fast一次移動兩位, slow一次移動一位,當fast移動到末尾時,slow移動到中間位置。

利用變量為tmp = slow.next記錄后鏈表的頭節(jié)點,并將slow.next = null將前后鏈表斷開。

ListNode sortList(ListNode head) {
 if (head == null || head.next == null)
  return head;
 
 ListNode fast = head.next, slow = head;
 while (fast != null && fast.next != null) {
  fast = fast.next.next; // 一次移動兩位
  slow = slow.next; // 一次移動一位
 }
 
 ListNode tmp = slow.next; // 記錄后鏈表的頭節(jié)點
 slow.next = null; // 將前后鏈表斷開
 //...
}

cut遞歸的終止條件 base case 為當head.next == null,即鏈表只有一個節(jié)點。

歸并merge環(huán)節(jié):

使用輔助指針,將前后鏈表后合并為一個有序鏈表

ListNode sortList(ListNode head) {
 //...
 // left 為前鏈表的頭節(jié)點, right 為后鏈表的頭節(jié)點, h 為輔助節(jié)點
 while (left != null && right != null) {
  if (left.val < right.val) { 
   h.next = left;
   left = left.next;
  } else {
   h.next = right;
   right = right.next;
  }
  h = h.next;
 }
 h.next = left != null ? left : right;
 //...
}

明白上面的兩個環(huán)節(jié)后,就能輕松明白我們完整的算法了。

ListNode sortList(ListNode head) {
    if (head == null || head.next ==null)
      return head;
    // cut過程
    ListNode fast = head.next, slow = head;
    while (fast != null && fast.next != null) {
      fast = fast.next.next;
      slow = slow.next;
    }
    ListNode tmp = slow.next;
    slow.next = null;
	// merage過程
    ListNode left = sortList(head);
    ListNode right = sortList(tmp);
    ListNode h = new ListNode(0);
    ListNode res = h;
    while (left != null && right != null) {
      if (left.val < right.val) {
        h.next = left;
        left = left.next;
      } else {
        h.next = right;
        right = right.next;
      }
      h = h.next;
    }
    h.next = left != null ? left : right;

    return res.next;
  }

以上就是Java 利用遞歸實現(xiàn)鏈表的歸并排序的詳細內容,更多關于Java 鏈表排序的資料請關注腳本之家其它相關文章!

相關文章

  • 解決Java變異出現(xiàn)錯誤No enclosing instance of type XXX is accessible

    解決Java變異出現(xiàn)錯誤No enclosing instance of type XXX is accessible

    這牌你文章主要給大家分享解決Java變異出現(xiàn)錯誤,具體的饑餓絕方案請看下面文章的內容,需要的朋友可以參考一下,希望能幫助到你
    2021-09-09
  • java實現(xiàn)文件加密解密多種方法

    java實現(xiàn)文件加密解密多種方法

    這篇文章主要給大家介紹了關于java實現(xiàn)文件加密解密多種方法的相關資料,?Java支持多種加密解密算法,常用的有DES、AES、RSA等,需要的朋友可以參考下
    2023-07-07
  • springboot整合jasypt的詳細過程

    springboot整合jasypt的詳細過程

    這篇文章主要介紹了springboot整合jasypt的詳細過程,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-02-02
  • Spring Boot整合mybatis(一)實例代碼

    Spring Boot整合mybatis(一)實例代碼

    sprig-boot是一個微服務架構,加快了spring工程快速開發(fā),以及簡便了配置。接下來開始spring-boot與mybatis的整合
    2017-07-07
  • 解決springMVC 跳轉js css圖片等靜態(tài)資源無法加載的問題

    解決springMVC 跳轉js css圖片等靜態(tài)資源無法加載的問題

    下面小編就為大家?guī)硪黄鉀QspringMVC 跳轉js css圖片等靜態(tài)資源無法加載的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • Java實現(xiàn)文件的加密解密功能示例

    Java實現(xiàn)文件的加密解密功能示例

    這篇文章主要介紹了Java實現(xiàn)文件的加密解密功能,結合具體實例形式詳細分析了java針對文件的讀取、判斷、加密、解密等相關步驟與操作技巧,需要的朋友可以參考下
    2017-10-10
  • Spring Session的使用示例

    Spring Session的使用示例

    最近團隊一個項目需要使用Session,之前沒有在實際項目中使用過Spring-Session,這里記錄一下使用的過程
    2021-06-06
  • Java集合中的Collection接口總結

    Java集合中的Collection接口總結

    這篇文章主要介紹了Java集合中的Collection接口總結,Collection 接口是 List和Set接口的父接口,該接口里定義的方法既可用于操作 Set 集合,也可用于操作 List 集合,需要的朋友可以參考下
    2023-11-11
  • Mybatis查詢多條記錄并返回List集合的方法

    Mybatis查詢多條記錄并返回List集合的方法

    這篇文章主要介紹了Mybatis查詢多條記錄并返回List集合的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • java一個數(shù)據(jù)整理的方法代碼實例

    java一個數(shù)據(jù)整理的方法代碼實例

    這篇文章主要介紹了java一個數(shù)據(jù)整理的方法代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09

最新評論

乌审旗| 雅江县| 新乐市| 扎囊县| 吉安市| 浠水县| 遵义市| 方正县| 阳新县| 盘山县| 博客| 临漳县| 延庆县| 琼中| 图片| 鹤峰县| 桦甸市| 南靖县| 行唐县| 肃北| 巨野县| 隆子县| 云林县| 绩溪县| 伊吾县| 黎平县| 澎湖县| 曲松县| 慈溪市| 北辰区| 齐齐哈尔市| 泾阳县| 梓潼县| 吉林省| 白银市| 顺昌县| 乐亭县| 新津县| 上蔡县| 长葛市| 宜川县|