vlambda博客
学习文章列表

【每日编程-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++代码:

【每日编程-107期】链表排序之归并排序


C代码:

【每日编程-107期】链表排序之归并排序


Java代码:


明日题目预告:

链表排序之冒泡排序

示例 1:

输入:4->2->1->3

输出:1->2->3->4

示例 2:

输入:-1->5->3->4->0

输出:-1->0->3->4->5