Skip to content

Commit 2573984

Browse files
authored
Merge pull request crossoverJie#62 from ryandonglin/master
添加链表归并排序文件说明和代码注释
2 parents 29aa61e + 6b7739b commit 2573984

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

src/main/java/com/crossoverjie/algorithm/LinkedListMergeSort.java

+15-1
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
11
package com.crossoverjie.algorithm;
22

33
/**
4-
* 链表排序, 建议使用归并排序
4+
* 链表排序, 建议使用归并排序,
5+
* 问题描述,给定一个Int的链表,要求在时间最优的情况下完成链表元素由大到小的排序,
6+
* e.g: 1->5->4->3->2
7+
* 排序后结果 5->4->3->2->1
58
*
69
710
* @date 6/7/2018 11:42 PM
811
* @since 1.0
912
*/
1013
public class LinkedListMergeSort {
1114

15+
/**
16+
* 定义链表数据结构,包含当前元素,以及当前元素的后续元素指针
17+
*/
1218
final static class Node {
1319
int e;
1420
Node next;
@@ -43,6 +49,7 @@ public Node mergeSort(Node first, int length) {
4349

4450
/**
4551
* 这里是链表归并时要注意的细节
52+
* 在链表进行归并排序过程中,会涉及到将一个链表打散为两个独立的链表,所以需要在中间元素的位置将其后续指针指为null;
4653
*/
4754
Node right = middle.next;
4855
middle.next = null;
@@ -58,6 +65,13 @@ public Node mergeSort(Node first, int length) {
5865
}
5966
}
6067

68+
/**
69+
* 合并链表,具体的实现细节可参考<code>MergeTwoSortedLists</code>
70+
*
71+
* @param left
72+
* @param right
73+
* @return
74+
*/
6175
public Node mergeList(Node left, Node right) {
6276

6377
Node head = new Node();

0 commit comments

Comments
 (0)