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&lt;E&gt; <font color=#8000a0><font color=#ff8000>extends</font> </font>FavoriteList&lt;E&gt; {  <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&lt;Entry&lt;E&gt;&gt; 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&lt;E&gt; <font color=#0000ff>top</font>(<font color=#8000a0>int</font> k) {    <font color=#ff8000>if</font><font color=#0000ff> </font>(k &lt; 0 || k &gt; <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&lt;E&gt; T = <font color=#8000a0><font color=#ff8000>new</font> </font>NodePositionList&lt;E&gt;<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&lt;Entry&lt;E&gt;&gt; C = <font color=#8000a0><font color=#ff8000>new</font> </font>NodePositionList&lt;Entry&lt;E&gt;&gt;<font color=#0000ff></font>();      <font color=#ff8000>for</font><font color=#0000ff> </font>(Entry&lt;E&gt; 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 &lt; k; i++) {	Position&lt;Entry&lt;E&gt;&gt; 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&lt;Entry&lt;E&gt;&gt; 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 &gt; 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 + -
显示快捷键?