sort-mergesort.html
来自「经典的数据结构源代码(java 实现)」· HTML 代码 · 共 37 行
HTML
37 行
<html><head><title>Code Fragment</title></head><body text=#000000><center></center><br><br><dl><dd><pre> <font color=#ff0080>/** * Sorts the elements of list in in nondecreasing order according * to comparator c, using the merge-sort algorithm. **/</font> <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#8000a0>static</font> <E> <font color=#8000a0><font color=#8000a0>void</font> </font><font color=#0000ff>mergeSort </font>(PositionList<E> in, Comparator<E> c) { <font color=#8000a0><font color=#8000a0>int</font> </font>n = in.<font color=#0000ff>size</font>(); <font color=#ff8000>if</font><font color=#0000ff> </font>(n < 2) <font color=#ff8000>return</font>; <font color=#ff0080>// the in list is already sorted in this case</font> <font color=#ff0080>// divide</font> PositionList<E> in1 = <font color=#8000a0><font color=#ff8000>new</font> </font>NodePositionList<E><font color=#0000ff></font>(); PositionList<E> in2 = <font color=#8000a0><font color=#ff8000>new</font> </font>NodePositionList<E><font color=#0000ff></font>(); <font color=#8000a0><font color=#8000a0>int</font> </font>i = 0; <font color=#ff8000>while</font><font color=#0000ff> </font>(i < n/2) { in1.<font color=#0000ff>addLast</font>(in.<font color=#0000ff>remove</font>(in.<font color=#0000ff>first</font>())); <font color=#ff0080>// move the first n/2 elements to in1</font> i++; } <font color=#ff8000>while</font><font color=#0000ff> </font>(!in.<font color=#0000ff>isEmpty</font>()) in2.<font color=#0000ff>addLast</font>(in.<font color=#0000ff>remove</font>(in.<font color=#0000ff>first</font>())); <font color=#ff0080>// move the rest to in2</font> <font color=#ff0080>// recur</font> <font color=#0000ff>mergeSort</font>(in1,c); <font color=#0000ff>mergeSort</font>(in2,c); <font color=#ff0080>//conquer</font> <font color=#0000ff>merge</font>(in1,in2,c,in); }</dl></body></html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?