电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Java 利用遞歸實現鏈表的歸并排序

瀏覽:7日期:2022-08-24 17:24:27

Java 利用遞歸實現鏈表的歸并排序

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

利用遞歸實現鏈表的歸并排序有兩個環節:

分割cut環節:

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

利用變量為tmp = slow.next記錄后鏈表的頭節點,并將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; // 記錄后鏈表的頭節點 slow.next = null; // 將前后鏈表斷開 //...}

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

歸并merge環節:

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

Java 利用遞歸實現鏈表的歸并排序

ListNode sortList(ListNode head) { //... // left 為前鏈表的頭節點, right 為后鏈表的頭節點, 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; //...}

明白上面的兩個環節后,就能輕松明白我們完整的算法了。

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 利用遞歸實現鏈表的歸并排序的詳細內容,更多關于Java 鏈表排序的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
主站蜘蛛池模板: RTO换向阀_VOC高温阀门_加热炉切断阀_双偏心软密封蝶阀_煤气蝶阀_提升阀-湖北霍科德阀门有限公司 | 电子元器件呆滞料_元器件临期库存清仓尾料_尾料优选现货采购处理交易商城 | 长沙广告公司_制作,长沙喷绘_发光字_招牌制作_长沙泓润广告官网 长城人品牌官网 | 紫外荧光硫分析仪-硫含量分析仪-红外光度测定仪-泰州美旭仪器 | 企典软件一站式企业管理平台,可私有、本地化部署!在线CRM客户关系管理系统|移动办公OA管理系统|HR人事管理系统|人力 | 哈希余氯测定仪,分光光度计,ph在线监测仪,浊度测定仪,试剂-上海京灿精密机械有限公司 | 航拍_专业的无人机航拍摄影门户社区网站_航拍网 | 聚丙烯酰胺_厂家_价格-河南唐达净水材料有限公司 | 台式低速离心机-脱泡离心机-菌种摇床-常州市万丰仪器制造有限公司 | 钢格板|镀锌钢格板|热镀锌钢格板|格栅板|钢格板|钢格栅板|热浸锌钢格板|平台钢格板|镀锌钢格栅板|热镀锌钢格栅板|平台钢格栅板|不锈钢钢格栅板 - 专业钢格板厂家 | 无线联网门锁|校园联网门锁|学校智能门锁|公租房智能门锁|保障房管理系统-KEENZY中科易安 | 北京易通慧公司从事北京网站优化,北京网络推广、网站建设一站式服务商-北京网站优化公司 | 广西教师资格网-广西教师资格证考试网 | 杭州厂房降温,车间降温设备,车间通风降温,厂房降温方案,杭州嘉友实业爽风品牌 | 冷却塔降噪隔音_冷却塔噪声治理_冷却塔噪音处理厂家-广东康明冷却塔降噪厂家 | 光伏支架成型设备-光伏钢边框设备-光伏设备厂家 | 体坛网_体坛+_体坛周报新闻客户端| 天坛家具官网| 石家庄网站建设|石家庄网站制作|石家庄小程序开发|石家庄微信开发|网站建设公司|网站制作公司|微信小程序开发|手机APP开发|软件开发 | 预制围墙_工程预制围墙_天津市瑞通建筑材料有限公司 | 网站制作优化_网站SEO推广解决方案-无锡首宸信息科技公司 | 阻垢剂,反渗透阻垢剂,缓蚀阻垢剂-山东普尼奥水处理科技有限公司 真空粉体取样阀,电动楔式闸阀,电动针型阀-耐苛尔(上海)自动化仪表有限公司 | 镀锌方管,无缝方管,伸缩套管,方矩管_山东重鑫致胜金属制品有限公司 | 危废处理系统,水泥厂DCS集散控制系统,石灰窑设备自动化控制系统-淄博正展工控设备 | 软文发布-新闻发布推广平台-代写文章-网络广告营销-自助发稿公司媒介星 | 菏泽知彼网络科技有限公司 | 上海洗地机-洗地机厂家-全自动洗地机-手推式洗地机-上海滢皓洗地机 | 医养体检包_公卫随访箱_慢病随访包_家签随访包_随访一体机-济南易享医疗科技有限公司 | 河南生物显微镜,全自动冰冻切片机-河南荣程联合科技有限公司 | 步入式高低温测试箱|海向仪器 | 压缩空气检测_气体_水质找上海京工-服务专业、价格合理 | 半自动预灌装机,卡式瓶灌装机,注射器灌装机,给药器灌装机,大输液灌装机,西林瓶灌装机-长沙一星制药机械有限公司 | 宽带办理,电信宽带,移动宽带,联通宽带,电信宽带办理,移动宽带办理,联通宽带办理 | _网名词典_网名大全_qq网名_情侣网名_个性网名 | 【黄页88网】-B2B电子商务平台,b2b平台免费发布信息网 | 接地电阻测试仪[厂家直销]_电缆故障测试仪[精准定位]_耐压测试仪-武汉南电至诚电力设备 | 交流伺服电机|直流伺服|伺服驱动器|伺服电机-深圳市华科星电气有限公司 | 骨灰存放架|骨灰盒寄存架|骨灰架厂家|智慧殡葬|公墓陵园管理系统|网上祭奠|告别厅智能化-厦门慈愿科技 | 金属清洗剂,防锈油,切削液,磨削液-青岛朗力防锈材料有限公司 | 锂离子电池厂家-山东中信迪生电源| 环保袋,无纺布袋,无纺布打孔袋,保温袋,环保袋定制,环保袋厂家,环雅包装-十七年环保袋定制厂家 |