排序算法之归并排序 java
2016-11-15 19:00
267 查看
数据通过链表方式存储实现代码如下:
public static ListNode mergeSortList(ListNode head) { if(head==null||head.next==null) return head; ListNode mid = getMid(head); ListNode right = mergeSortList(mid.next); mid.next=null; ListNode left = mergeSortList(head); return merge(left, right); } public static ListNode getMid(ListNode head){ ListNode p=head; ListNode q = p.next; while(q!=null&&q.next!=null){ p=p.next; q=q.next.next; } return p; } public static ListNode merge(ListNode left,ListNode right){ ListNode result; if(left==null) return right; if(right==null) return left; if(left.val<right.val){ result=left; left=left.next; } else{ result=right; right=right.next; } ListNode temp=result; while(left!=null&&right!=null){ if(left.val<right.val){ temp.next=left; left=left.next; } else{ temp.next=right; right=right.next; } temp=temp.next; } if(left!=null) temp.next=left; if(right!=null) temp.next=right; return result; }
相关文章推荐
- Java常见排序算法之归并排序
- 排序算法之归并排序(JAVA)
- Java实现排序算法之归并排序
- 排序算法之快速排序、归并排序(java实现)
- 算法之排序小结2---归并排序(Java)
- java实现排序算法之归并排序(2路归并)
- 排序(快排,冒泡,堆排序,插入排序,归并排序,选择排序)算法Java实现
- 几种常见排序算法之Java实现(插入排序、希尔排序、冒泡排序、快速排序、选择排序、归并排序)
- 基于JAVA的排序算法之六--归并排序
- 排序算法复习(Java实现)(二): 归并排序,堆排序,桶式排序,基数排序
- 算法熟记-排序系列-归并排序
- 【排序】排序算法之归并排序
- Java数据结构与算法--高级排序
- java基础知识之 算法 【冒泡排序】【快速排序】
- 用JAVA实现排序算法之四:快速排序
- 查找""排序""简单数学计算" "简单算法"[Java实现](数据结构和算法)(复习)(持续更新
- 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,而冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。
- 【转】排序算法复习(Java实现)(二): 归并排序,堆排序,桶式排序,基数排序
- Java实现快速排序、归并排序、堆排序
- 算法-快速排序-java实现