favoritelistmtf-favorites.html
来自「经典的数据结构源代码(java 实现)」· HTML 代码 · 共 49 行
HTML
49 行
<html><head><title>Code Fragment</title></head><body text=#000000><center></center><br><br><dl><dd><pre><font color=#8000a0>public</font> <font color=#8000a0><font color=#ff8000>class</font> </font>FavoriteListMTF<E> <font color=#8000a0><font color=#ff8000>extends</font> </font>FavoriteList<E> { <font color = #ff0080>/** Default constructor */</font> <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#0000ff>FavoriteListMTF</font>() { } <font color = #ff0080>/** Moves up an entry to the first position; O(1) time */</font> <font color=#8000a0><font color=#8000a0>protected</font> </font><font color=#8000a0>void</font> <font color=#0000ff>moveUp</font>(Position<Entry<E>> pos) { fList.<font color=#0000ff>addFirst</font>(fList.<font color=#0000ff>remove</font>(pos)); } <font color = #ff0080>/** Returns the k most accessed elements, for a given k; O(kn) time */</font> <font color=#8000a0><font color=#8000a0>public</font> </font>Iterable<E> <font color=#0000ff>top</font>(<font color=#8000a0>int</font> k) { <font color=#ff8000>if</font><font color=#0000ff> </font>(k < 0 || k > <font color=#0000ff>size</font>()) <font color=#8000a0><font color=#ff8000>throw</font> </font><font color=#ff8000>new</font> <font color=#0000ff>IllegalArgumentException</font>(<font color=#008000>"Invalid argument"</font>); PositionList<E> T = <font color=#8000a0><font color=#ff8000>new</font> </font>NodePositionList<E><font color=#0000ff></font>(); <font color=#ff0080>// top-k list</font> <font color=#ff8000>if</font><font color=#0000ff> </font>(!<font color=#0000ff>isEmpty</font>()) { <font color=#ff0080>// copy entries into temporary list C</font> PositionList<Entry<E>> C = <font color=#8000a0><font color=#ff8000>new</font> </font>NodePositionList<Entry<E>><font color=#0000ff></font>(); <font color=#ff8000>for</font><font color=#0000ff> </font>(Entry<E> e: fList) C.<font color=#0000ff>addLast</font>(e); <font color=#ff0080>// find the top k elements, one at a time</font> <font color=#ff8000>for</font><font color=#0000ff> </font>(<font color=#8000a0>int</font> i = 0; i < k; i++) { Position<Entry<E>> maxPos = null; <font color=#ff0080>// position of top entry</font> <font color=#8000a0><font color=#8000a0>int</font> </font>maxCount = -1; <font color=#ff0080>// access count of top entry</font> <font color=#ff8000>for</font><font color=#0000ff> </font>(Position<Entry<E>> p: C.<font color=#0000ff>positions</font>()) { <font color=#ff0080>// examine all entries of C</font> <font color=#8000a0><font color=#8000a0>int</font> </font>c = <font color=#0000ff>count</font>(p); <font color=#ff8000>if</font><font color=#0000ff> </font>(c > maxCount) { <font color=#ff0080>// found an entry with higher access count</font> maxCount = c; maxPos = p; } } T.<font color=#0000ff>addLast</font>(<font color=#0000ff>value</font>(maxPos)); <font color=#ff0080>// add top entry to list T</font> C.<font color=#0000ff>remove</font>(maxPos); <font color=#ff0080>// remove top entry from list C</font> } } <font color=#8000a0><font color=#ff8000>return</font> </font>T; }}</dl></body></html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?