基于链表的快速排序及归并排序
来源:互联网 发布:浮云网 淘宝号 编辑:程序博客网 时间:2024/05/22 14:30
归并排序
package 算法和数据结构;/*** Filename : LinkedList_MergeSort.java* Author : zhihao_tian@126.com* Creation time : 下午5:47:02 - 2017年3月26日* Description :*/class ListNode { int val; ListNode next; ListNode(int x){ val = x; next = null; }}public class LinkedList_MergeSort{ public ListNode sortList(ListNode head){ if(head==null||head.next==null){ return head; } ListNode mid=findMid(head); ListNode right=mid.next; mid.next=null; return merge(sortList(head),sortList(right)); } private ListNode merge(ListNode head1,ListNode head2){ ListNode dummy=new ListNode(0); ListNode cur=dummy; while(head1!=null&&head2!=null){ if(head1.val<=head2.val){ cur.next=head1; head1=head1.next; }else{ cur.next=head2; head2=head2.next; } cur=cur.next; } if(head1!=null){ cur.next=head1; }else if(head2!=null){ cur.next=head2; } return dummy.next; } private ListNode findMid(ListNode head){ if(head==null){ return head; } ListNode slow=head; ListNode fast=head; while(fast.next!=null&&fast.next.next!=null){ fast=fast.next.next; slow=slow.next; } return slow; }}
快速排序
package 算法和数据结构;/*** Filename : LinkedList_QuickSort.java* Author : zhihao_tian@126.com* Creation time : 下午5:50:18 - 2017年3月26日* Description :*/public class LinkedList_QuickSort{ public ListNode sortList(ListNode head){ return quickSort(head,null); } private ListNode quickSort(ListNode head,ListNode end){ if(head!=end){ ListNode cur=partion(head,end); quickSort(head,cur); quickSort(cur.next,end); } return head; } private ListNode partion(ListNode head,ListNode end){ int key=head.val; ListNode p=head; ListNode q=head.next; while(q!=end){ if(q.val<key){ p=p.next; swap(p,q); } q=q.next; } swap(head,p); return p; } private void swap(ListNode p,ListNode q){ int temp=p.val; p.val=q.val; q.val=temp; }}
0 0
- 基于链表的快速排序及归并排序
- 基于分治法的快速排序和归并排序
- 单向链表排序:快速排序和归并排序
- 快速排序&归并排序
- 快速排序,归并排序
- 快速排序、归并排序
- 快速排序&&归并排序
- 归并排序+快速排序
- 快速排序 归并排序
- 快速排序&归并排序
- 快速排序 && 归并排序
- 归并排序 快速排序
- 快速排序&归并排序
- 快速排序 && 归并排序
- 快速排序,归并排序
- Sort List——链表的快速/归并排序
- 基于链表的快速排序
- 归并排序和快速排序的比较
- 杭电1195 Open the Lock
- 设计模式——创建型模式之工厂模式
- Linux 多线程之Joinable和Detached
- 牛客刷题:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- xampp更改存放项目目录apache
- 基于链表的快速排序及归并排序
- 送邮件被退回,提示: Helo command rejected: Invalid name 错误,helorejected
- 2.2 一往直前!贪心法
- Codeforces Round #412 (Div. 2)(Codeforces 807 ABCDE)
- 一些常用的第三方框架之Okhttp
- 差分约束——Luogu1993 小K的农场
- 我对Java Serializable(序列化)的理解和总结
- 看了两天的bootstrap,顿觉框架真是漂亮又方便 就照着官网推的网站写了一个响应式
- 分布式锁的实现方式