排序算法之归并排序 java

来源:互联网 发布:蓝牙耳机推荐 知乎2016 编辑:程序博客网 时间:2024/05/21 14:48

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;}

数据通过链表方式存储实现代码如下:


0 0
原创粉丝点击