【每日编程-107期】链表排序之归并排序
今日问题:
示例 1:
输入:4->2->1->3
输出:1->2->3->4
示例 2:
输入:-1->5->3->4->0
输出:-1->0->3->4->5
解决方法:
归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。
思路:
(1)先找到链表的中间结点,用到快慢指针;
(2)对两个子链表递归进行排序;
(3)合并两个链表。
C++代码:
C代码:
Java代码:
明日题目预告:
链表排序之冒泡排序
示例 1:
输入:4->2->1->3
输出:1->2->3->4
示例 2:
输入:-1->5->3->4->0
输出:-1->0->3->4->5