您的位置:首页 > 编程语言 > Java开发

排序算法之归并排序 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: