<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>数据结构与算法 on 映屿</title>
    <link>https://blog.verdant.ee/tags/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/</link>
    <description>Recent content in 数据结构与算法 on 映屿</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    
      <managingEditor>i@glowisle.me (五葉地錦)</managingEditor>
    
    
      <webMaster>i@glowisle.me (五葉地錦)</webMaster>
    
    
    
    <lastBuildDate>Sat, 07 Jun 2025 13:08:07 +0000</lastBuildDate>
    
    
    <atom:link href="http://blog.verdant.ee/tags/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/atom.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>4Key音游段位单曲成绩计算的程序实现</title>
      <link>https://blog.verdant.ee/posts/4key%E9%9F%B3%E6%B8%B8%E6%AE%B5%E4%BD%8D%E5%8D%95%E6%9B%B2%E6%88%90%E7%BB%A9%E8%AE%A1%E7%AE%97%E7%9A%84%E7%A8%8B%E5%BA%8F%E5%AE%9E%E7%8E%B0/</link>
      <pubDate>Sat, 07 Jun 2025 13:08:07 +0000</pubDate><author>i@glowisle.me (五葉地錦)</author>
      <guid>https://blog.verdant.ee/posts/4key%E9%9F%B3%E6%B8%B8%E6%AE%B5%E4%BD%8D%E5%8D%95%E6%9B%B2%E6%88%90%E7%BB%A9%E8%AE%A1%E7%AE%97%E7%9A%84%E7%A8%8B%E5%BA%8F%E5%AE%9E%E7%8E%B0/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;&#xA;&lt;p&gt;其实这个坑我很早以前就想开了，在我刚开始学编程那会就一直想写一个这个东西。但苦于数学进度没达到，要用到加权平均数，这东西我前两天才学到，之前对数学也一直是懒得学的状态，要不然几乎是看不懂那个算法的。&lt;/p&gt;&#xA;&lt;p&gt;我手头有一个&lt;a href=&#34;https://github.com/Special-Week&#34;&gt;Special-Week&lt;/a&gt;写的网页版的单曲成绩计算器，就以这个为研究样本吧。以下简称原作者为sw（如有冒犯请联系修改）&lt;/p&gt;&#xA;&lt;h2 id=&#34;数据结构设计&#34;&gt;数据结构设计&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 基础的4k类&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;class&lt;/span&gt; Dan4k {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        constructor(key1, key2, key3, key4, danName) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.m_key1 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; key1;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.m_key2 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; key2;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.m_key3 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; key3;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.m_key4 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; key4;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.m_danName &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; danName;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;每一个段（LN、Om），sw都单独写了一个内部类，继承Dan4k。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// lnDan类&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;class&lt;/span&gt; LnDan &lt;span style=&#34;color:#e67e80&#34;&gt;extends&lt;/span&gt; Dan4k {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        constructor(key1, lnKey1, key2, lnKey2, key3, lnKey3, key4, lnKey4, danName) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;super&lt;/span&gt;(key1, key2, key3, key4, danName);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.m_lnKey1 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; lnKey1;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.m_lnKey2 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; lnKey2;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.m_lnKey3 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; lnKey3;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.m_lnKey4 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; lnKey4;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// ma段&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;class&lt;/span&gt; MaDan &lt;span style=&#34;color:#e67e80&#34;&gt;extends&lt;/span&gt; Dan4k {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        constructor(key1, key2, key3, key4, name1, name2, name3, name4, danName) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;super&lt;/span&gt;(key1, key2, key3, key4, danName);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.m_name1 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; name1;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.m_name2 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; name2;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.m_name3 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; name3;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.m_name4 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; name4;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// reform段&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;class&lt;/span&gt; ReformDan &lt;span style=&#34;color:#e67e80&#34;&gt;extends&lt;/span&gt; Dan4k {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        constructor(key1, key2, key3, key4, name1, name2, name3, name4, danName) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;super&lt;/span&gt;(key1, key2, key3, key4, danName);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.m_name1 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; name1;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.m_name2 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; name2;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.m_name3 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; name3;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.m_name4 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; name4;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// om段&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;class&lt;/span&gt; OmDan &lt;span style=&#34;color:#e67e80&#34;&gt;extends&lt;/span&gt; Dan4k {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        constructor(key1, key2, key3, key4, danName) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;super&lt;/span&gt;(key1, key2, key3, key4, danName);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;我打算重写的程序不带LN玩了，我自己也没玩过LN，不清楚是什么机制。那就来看看剩下的几个类。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;Dan4k&lt;/code&gt;类定义了一个段位的基础属性，但是这个参数key1-4是用来做什么在当前上下文暂且不清楚，是第n首歌的物量吧。&lt;/p&gt;&#xA;&lt;p&gt;那么由此可以推断，这些类都描述了一个谱面的基本属性：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;物量&lt;/li&gt;&#xA;&lt;li&gt;歌曲名称&lt;/li&gt;&#xA;&lt;li&gt;段位名称&#xA;然后分支匹配数据并计算。我也用C语言实现一个。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 整个段位信息&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;typedef&lt;/span&gt; &lt;span style=&#34;color:#e67e80&#34;&gt;struct&lt;/span&gt; Dan {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 段位名字&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;char&lt;/span&gt;&lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; dan_name; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 四首歌的名字，用于匹配数据&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;char&lt;/span&gt;&lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; song1_name;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;char&lt;/span&gt;&lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; song2_name;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;char&lt;/span&gt;&lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; song3_name;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;char&lt;/span&gt;&lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; song4_name;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 四首歌的物量&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; song1_key;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; song2_key;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; song3_key;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; song4_key;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}Dan;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;来看看网页版中数据是如何存储的&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// MaDan数据&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;let&lt;/span&gt; MaArr &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; [&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;813&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;955&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;907&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;654&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Glitch Nerds&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Borealis&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Niflheim&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Moon&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;1dan&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;1152&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;850&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;950&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;969&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Follow Tomorrow&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Bronze Coffin&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Keigan no Zettaireido&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;SakuraMirage&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;2dan&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;1169&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1143&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;974&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1347&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Quon&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Genkyoku o Kirikizamu&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Gin no Kaze&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Adjudicatorz-Danzai-&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;3dan&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;1400&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1402&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1685&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1599&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Tenkuu no Yoake&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;VALLISTA&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Crystal World ~Fracture~&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Zenithalize&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;4dan&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;1953&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2250&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2166&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1667&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Ten Thousand Tons of Anonymous Letters&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Chips of Notes&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Despair of Elferia&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Kamigami no Asobi&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;5dan&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;1487&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1424&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1381&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1587&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Sweet Cherry X&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Akasagarbha&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;HELLO EveryOne&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;DataErr0r&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;6dan&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;1909&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1814&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1777&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2681&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Fairy Stage&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Xross Infection&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Wave&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Blue Zenith&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;7dan&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;1962&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1067&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2388&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1772&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;The Lost Dedicated&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;The Party We Have Never Seen&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Finixe&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Ultimate Dream&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;8dan&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;1799&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2023&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2283&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1787&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Dusk&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Panic Popn Picnic&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Kick-ass Kung-Fu Carnival&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Yakusoku no kimi&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;9dan&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;2606&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2188&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2194&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2187&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Chaser&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Loli Fantasy&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Daydream&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Moon Gate&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;10dan&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;2160&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1952&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1821&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;3249&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Border of Life&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Scorpion Dance&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;The Island of Albatross&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;beautiful loli thing&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ex1&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;2871&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2024&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1871&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2452&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Hitsune no youmeiri&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;紫阳花-AZISAI-&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;love&amp;amp;justice&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;message&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ex2&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;2327&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1593&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2166&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2200&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Jumble Rumble&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;End Time&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;++&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Crow Solace&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ex3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;2731&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2653&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2033&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2761&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;EDM Jumpers&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;line-epsilon&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Contrapasso -paradiso-&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;YELL!&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ex4&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;3229&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2731&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2561&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2109&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Satori de Pon!&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Legend of Seeker&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Crystal World -Fracture-&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Wizdomiot&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ex5&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;1766&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1861&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;3171&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1680&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Sepia&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Nopea&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Satori Trisis&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Death&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ex6&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;2339&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2461&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2511&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2177&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Paranoia&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Boulafacet&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Paraclete -Miracle-&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Yumemi no Shonen&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ex7&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;1929&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2380&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2710&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;4675&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Martail Arts&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Gene Disruption&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Paradigm Shift&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Death Melody&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ex8&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;3468&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;3335&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;3698&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;5061&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Only my railgun&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;-Purgatorium-&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Blue Zenith&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Inner Universe&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;exfin&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;492&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;529&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;595&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;681&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Ikitoshi Ikerumono&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Rambling Pleat&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Yi Meng Qian Xiao&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;White Eternity&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;0danv3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;695&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;621&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;718&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1279&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Rex Incoqnito&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Koiseyo Otome!&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Break&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;KING&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;1danv3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;1397&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1090&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;805&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1212&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Stargazer&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Seyana&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Love Emotion&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Mermaid Girl&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;2danv3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;1055&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1489&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1288&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1789&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Koi Kou Enishi&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Onegai!Kon Kon Oinari-sama&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;The Last page&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Hoshi ga Furanai Machi&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;3danv3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;1865&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1434&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1284&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1839&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Umiyuri Kaiteitan&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Fire in the sky&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Icyxis&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;The Crimson Empire&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;4danv3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;1282&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1706&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1473&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1939&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Platinum Disco&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Cute na Kanojo&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Reimei Sketchbook&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Joker&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;5danv3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;1694&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1636&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1803&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2115&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Chocolate Disco&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Call Me, Beep Me (If You Wanna Reap Me)&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;DIE IN THE SEA&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;unhappy century&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;6danv3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;1701&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1799&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2132&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1899&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Don&amp;#39;t Stop The Music&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Six Acid Strings&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Arkadia [Illusion]&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Valkyrie Revolutia&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;7danv3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;2237&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2081&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2280&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2000&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Don&amp;#39;t let you down&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Yoru ni Kakeru&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Snow Veil -Shoujo to Kemono no Mori-&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Positive Dance Time&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;8danv3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;2374&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1899&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2142&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1810&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Kikai Shoujo Gensou&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Cold Planet&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Stray Star&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Unleashed World&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;9danv3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;2034&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1740&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2270&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2166&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Hiensou&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Rocky Buinne&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Yue Ai Yue Ye&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Spin Eternally&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;10danv3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;1952&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2013&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1953&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2111&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Scorpion Dance&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Tailin no Soul&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Eiya no Parade&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Onsoku Uchuu Ryokou&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ex1v3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;2107&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1953&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2386&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2674&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Moments&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Towards the Horizon&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Torikago&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Frontier Explorer&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ex2v3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;2518&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2636&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2326&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2511&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Edison&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;INTERNET OVERDOSE&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Euthanasia&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Fin.ArcDeaR&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ex3v3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;2634&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2212&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2336&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2602&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ZENITHALIZE&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Asymmetrical Grooves&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Pure Ruby&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;EVERLASTING HAPPiNESS&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ex4v3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;2734&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2417&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;3089&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2974&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Bring Our Ignition Back&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Unsan-musho&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Electric Angel&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Kegare Naki Bara Juuji&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ex5v3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;2483&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2276&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2921&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;3194&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Defeat awaken battle ship&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Extraction&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Pastel Subliminal&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Synthesized Fortress&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ex6v3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;2846&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2260&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2333&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;3347&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;LiFE Garden&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Alpha&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Stay Alive&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Heaven&amp;#39;s Fall&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ex7v3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;3789&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;3663&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2424&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;3255&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Hayabusa&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Shuu no hazama&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Amatsukami&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;CRIMSON FIGHTER&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ex8v3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;3888&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;3030&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;3581&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;3700&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;crazy_tek (DJ Noriken Remix)&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Nhelv&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Shuuten&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Deadly force - Put an end&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ex9v3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;2828&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;3362&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;3393&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;5100&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Infinity Heaven&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;NEURO-CLOUD-9&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Kizuato&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Runengon&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;exfinv3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;可以看到，简单地调用构造函数新建对象。继续实现：&#xA;我们可以写一个&lt;code&gt;init&lt;/code&gt;函数，根据需要创建结构体变量。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Dan&lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;dan_data_init&lt;/span&gt;(Dan&lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt;, &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; songs_key);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;第二个参数是存放物量的数组，这样就实现了代码复用，减少重复代码的编写，定义一次所有物量即可。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 常规段&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; mld_1dan_total_keys[] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#d699b6&#34;&gt;813&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;955&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;907&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;654&lt;/span&gt;};&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; mld_2dan_total_keys[] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#d699b6&#34;&gt;1152&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;850&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;950&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;969&lt;/span&gt;};&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; mld_3dan_total_keys[] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#d699b6&#34;&gt;1169&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1143&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;974&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1347&lt;/span&gt;};&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; mld_4dan_total_keys[] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#d699b6&#34;&gt;1400&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1402&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1685&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1599&lt;/span&gt;};&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; mld_5dan_total_keys[] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#d699b6&#34;&gt;1953&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2250&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2166&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1667&lt;/span&gt;};&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; mld_6dan_total_keys[] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#d699b6&#34;&gt;1487&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1424&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1381&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1587&lt;/span&gt;};&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; mld_7dan_total_keys[] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#d699b6&#34;&gt;1909&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1814&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1777&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2681&lt;/span&gt;};&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; mld_8dan_total_keys[] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#d699b6&#34;&gt;1962&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1067&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2388&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1772&lt;/span&gt;};&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; mld_9dan_total_keys[] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#d699b6&#34;&gt;1799&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2023&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2283&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1787&lt;/span&gt;};&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; mld_10dan_total_keys[] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#d699b6&#34;&gt;2606&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2188&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2194&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2187&lt;/span&gt;};&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这里目前把常规段都录入了，那要怎么按需匹配创建结构体变量呢？可以通过一个指针数组保存这些数据数组的地址，然后根据用户输入的数字直接作为索引，创建结构体变量并进行初始化赋值。&lt;/p&gt;&#xA;&lt;p&gt;优点：避免if/switch分支判断逐个比较，时间复杂度为常数阶。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; dan_total_keys_index[] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; {mld_1dan_total_keys, mld_2dan_total_keys, mld_3dan_total_keys, mld_4dan_total_keys, mld_5dan_total_keys, mld_6dan_total_keys, mld_7dan_total_keys, mld_8dan_total_keys, mld_9dan_total_keys, mld_10dan_total_keys};&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;后续接着往这个数组里面装指针即可。&lt;/p&gt;&#xA;&lt;p&gt;基本的数据结构实现了，就可以开始研究一下算法，后续再录入数据吧。&lt;/p&gt;&#xA;&lt;h2 id=&#34;算法实现&#34;&gt;算法实现&lt;/h2&gt;&#xA;&lt;p&gt;曾经听群友讲过这个东西核心理念是加权平均数，最近才学到，那就来看看怎么做这个平均数吧。&lt;/p&gt;&#xA;&lt;p&gt;直接看原作者是怎么实现的&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#e67e80&#34;&gt;function&lt;/span&gt; normal_calculation(accArr, noteArr) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;let&lt;/span&gt; score1 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; accArr[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;let&lt;/span&gt; temp1 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; (noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;+&lt;/span&gt; noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;]) &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; accArr[&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;-&lt;/span&gt; noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; accArr[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;let&lt;/span&gt; score2 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; temp1 &lt;span style=&#34;color:#7a8478&#34;&gt;/&lt;/span&gt; (noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;])&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;let&lt;/span&gt; temp2 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; (noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;+&lt;/span&gt; noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;+&lt;/span&gt; noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;2&lt;/span&gt;]) &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; accArr[&lt;span style=&#34;color:#d699b6&#34;&gt;2&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;-&lt;/span&gt; (noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;+&lt;/span&gt; noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;]) &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; accArr[&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;let&lt;/span&gt; score3 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; temp2 &lt;span style=&#34;color:#7a8478&#34;&gt;/&lt;/span&gt; (noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;2&lt;/span&gt;])&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;let&lt;/span&gt; temp3 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; (noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;+&lt;/span&gt; noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;+&lt;/span&gt; noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;2&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;+&lt;/span&gt; noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;3&lt;/span&gt;]) &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; accArr[&lt;span style=&#34;color:#d699b6&#34;&gt;3&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;-&lt;/span&gt; (noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;+&lt;/span&gt; noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;+&lt;/span&gt; noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;2&lt;/span&gt;]) &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; accArr[&lt;span style=&#34;color:#d699b6&#34;&gt;2&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;let&lt;/span&gt; score4 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; temp3 &lt;span style=&#34;color:#7a8478&#34;&gt;/&lt;/span&gt; (noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;3&lt;/span&gt;])&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;return&lt;/span&gt; [score1, score2, score3, score4]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;第一首的ACC不变，这个不说了。&lt;/p&gt;&#xA;&lt;p&gt;这个temp算的是什么？？？&lt;/p&gt;&#xA;&lt;p&gt;刚刚去看了一下引用，accArr存放着四首的玩家成绩Acc，noteArr存着这四首歌的Note总数量。&lt;/p&gt;&#xA;&lt;p&gt;还是没搞明白这个temp在干什么，看这段代码是真想骂街啊。&lt;/p&gt;&#xA;&lt;p&gt;用1dan举例子，Note和ACC：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;813, 955, 907, 654&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;99   98   96   94&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;del&gt;叠批来了&lt;/del&gt;&lt;/p&gt;&#xA;&lt;p&gt;Malody的每一个判定都有不同的权重，都有对应不同的Acc衰减，所以每一首歌曲结束后都是一个加权平均数。程序要做的事情就是逆推出原本的Acc。&lt;/p&gt;&#xA;&lt;p&gt;所以&lt;code&gt;accArr&lt;/code&gt;是一个累计加权平均值数组。&#xA;&lt;code&gt;noteArr&lt;/code&gt;是每批数据的权重。&#xA;目标：计算每批数据的&lt;strong&gt;独立加权平均值&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;h3 id=&#34;数学逻辑&#34;&gt;数学逻辑&lt;/h3&gt;&#xA;&lt;p&gt;&lt;strong&gt;第一批数据：&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;let&lt;/span&gt; score1 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; accArr[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;直接使用第一个累计平均值a1，此时只有第一批数据。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;第二批数据：&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;let&lt;/span&gt; temp1 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; (noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;+&lt;/span&gt; noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;]) &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; accArr[&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;-&lt;/span&gt; noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; accArr[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;] &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;let&lt;/span&gt; score2 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; temp1 &lt;span style=&#34;color:#7a8478&#34;&gt;/&lt;/span&gt; noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;累计平均值&lt;code&gt;a2 = (n1s1 +n2s2) / (n1 + n2)&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;解得&lt;code&gt;s2&lt;/code&gt;:&lt;code&gt;(n1 +n2)a2 - n1s1 / n2&lt;/code&gt;&#xA;&amp;hellip;&amp;hellip;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;额&amp;hellip;这一顿推导，给我也整不会了。我数学奇烂，那就用一个简明易懂的例子来理解吧。&lt;/p&gt;&#xA;&lt;h3 id=&#34;人话&#34;&gt;人话&lt;/h3&gt;&#xA;&lt;p&gt;假设参加了4次考试&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;第一次考了80分(score1)&lt;/li&gt;&#xA;&lt;li&gt;第二次的平均分是93.3(accArr[1])&lt;/li&gt;&#xA;&lt;li&gt;第三次的平均分是95(accArr[2])&lt;/li&gt;&#xA;&lt;li&gt;第四次的平均分是97.5(accArr[3])&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;但是你忘了每次考试的重要程度（权重）：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;第一次考试占10(noteArr[0] = 10)&lt;/li&gt;&#xA;&lt;li&gt;第二次 20(noteArr[1] = 20)&lt;/li&gt;&#xA;&lt;li&gt;第三次  30(noteArr[2] = 30)&lt;/li&gt;&#xA;&lt;li&gt;第四次 40(noteArr[3] = 40)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;你想知道每次考试单独的平均分是多少&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;第一次考试：&#xA;直接用平均分（因为只有一次考试）&lt;/li&gt;&#xA;&lt;li&gt;第二次考试：&#xA;先算总分：&lt;code&gt;前两次总分 = (10+20)*93.3 = 2800&lt;/code&gt;&#xA;减去第一次的分数：&lt;code&gt;第二次分数 = 2800 - 10 * 80 = 2000&lt;/code&gt;&#xA;第二次平均分： &lt;code&gt;score2 = 2000 / 20 = 100&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;第三次考试：&#xA;总分：&lt;code&gt;(10 + 20 + 30 )*95 = 5700&lt;/code&gt;&#xA;减去前两次：&lt;code&gt;第三次分数 = 5700 - 2800&lt;/code&gt;&#xA;平均分：&lt;code&gt;score3 = 2900 / 30 ≈ 96.7&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;第四次考试&#xA;总分：&lt;code&gt;(10+20+30+40)*97.5 = 9750&lt;/code&gt;&#xA;减去前3次：&lt;code&gt;第四次分数 = 9750 - 5700 = 4050&lt;/code&gt;&#xA;平均分：&lt;code&gt;score4 = 4050 / 40 = 101.25&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;写着写着突然发现&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;typedef&lt;/span&gt; &lt;span style=&#34;color:#e67e80&#34;&gt;struct&lt;/span&gt; Dan&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 四首歌的物量&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; songs_total_keys;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;} Dan;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这个数据结构只需要一个数组。&lt;/p&gt;&#xA;&lt;p&gt;人话说完了，该说说计算机的话了。&lt;/p&gt;&#xA;&lt;h3 id=&#34;实现&#34;&gt;实现&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;double&lt;/span&gt; &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;common_calc&lt;/span&gt;(&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt;total_keys, &lt;span style=&#34;color:#dbbc7f&#34;&gt;double&lt;/span&gt; &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt;player_acc)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 权重：total_keys&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 分数：player_acc&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 返回的数组，保存计算完成的Acc&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;double&lt;/span&gt; &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt;result &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; (&lt;span style=&#34;color:#dbbc7f&#34;&gt;double&lt;/span&gt; &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt;)&lt;span style=&#34;color:#b2c98f&#34;&gt;malloc&lt;/span&gt;(&lt;span style=&#34;color:#e67e80&#34;&gt;sizeof&lt;/span&gt;(&lt;span style=&#34;color:#dbbc7f&#34;&gt;double&lt;/span&gt;) &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;4&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;if&lt;/span&gt; (result &lt;span style=&#34;color:#7a8478&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;NULL&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#b2c98f&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;[ERROR] 内存分配失败！&amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;NULL&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;double&lt;/span&gt; song1_acc, song2_acc, song3_acc, song4_acc;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 第一首歌：直接取第一个累积平均值&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    result[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; player_acc[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 第二首歌：((n0 + n1)*a1 - n0*a0) / n1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;double&lt;/span&gt; sum2 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; total_keys[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;+&lt;/span&gt; total_keys[&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    result[&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; (sum2 &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; player_acc[&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;-&lt;/span&gt; total_keys[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; player_acc[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;]) &lt;span style=&#34;color:#7a8478&#34;&gt;/&lt;/span&gt; total_keys[&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 第三首歌：((n0 + n1 + n2)*a2 - (n0 + n1)*a1) / n2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;double&lt;/span&gt; sum3 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; sum2 &lt;span style=&#34;color:#7a8478&#34;&gt;+&lt;/span&gt; total_keys[&lt;span style=&#34;color:#d699b6&#34;&gt;2&lt;/span&gt;];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    result[&lt;span style=&#34;color:#d699b6&#34;&gt;2&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; (sum3 &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; player_acc[&lt;span style=&#34;color:#d699b6&#34;&gt;2&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;-&lt;/span&gt; sum2 &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; player_acc[&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;]) &lt;span style=&#34;color:#7a8478&#34;&gt;/&lt;/span&gt; total_keys[&lt;span style=&#34;color:#d699b6&#34;&gt;2&lt;/span&gt;];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 第四首歌：((n0 + n1 + n2 + n3)*a3 - (n0 + n1 + n2)*a2) / n3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;double&lt;/span&gt; sum4 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; sum3 &lt;span style=&#34;color:#7a8478&#34;&gt;+&lt;/span&gt; total_keys[&lt;span style=&#34;color:#d699b6&#34;&gt;3&lt;/span&gt;];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    result[&lt;span style=&#34;color:#d699b6&#34;&gt;3&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; (sum4 &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; player_acc[&lt;span style=&#34;color:#d699b6&#34;&gt;3&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;-&lt;/span&gt; sum3 &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; player_acc[&lt;span style=&#34;color:#d699b6&#34;&gt;2&lt;/span&gt;]) &lt;span style=&#34;color:#7a8478&#34;&gt;/&lt;/span&gt; total_keys[&lt;span style=&#34;color:#d699b6&#34;&gt;3&lt;/span&gt;];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;return&lt;/span&gt; result;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然后就是主函数处理用户输入了，没什么含金量，不水了。&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>【数据结构与算法】哈希表</title>
      <link>https://blog.verdant.ee/posts/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95%E5%93%88%E5%B8%8C%E8%A1%A8/</link>
      <pubDate>Wed, 28 May 2025 21:44:28 +0000</pubDate><author>i@glowisle.me (五葉地錦)</author>
      <guid>https://blog.verdant.ee/posts/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95%E5%93%88%E5%B8%8C%E8%A1%A8/</guid>
      <description>&lt;p&gt;哈希表（Hash Table）是一种基于键（Key）直接访问数据的高效数据结构，其核心思想是通过哈希函数将键映射到数组的特定位置，从而实现平均时间复杂度为 O(1)O(1) 的插入、查找和删除操作。&lt;/p&gt;&#xA;&lt;h2 id=&#34;结构定义&#34;&gt;结构定义&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 哈希表节点&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;typedef&lt;/span&gt; &lt;span style=&#34;color:#e67e80&#34;&gt;struct&lt;/span&gt; HashNode {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; key;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; value;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;struct&lt;/span&gt; Hashcode&lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; next;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;} HashNode;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 哈希表&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;typedef&lt;/span&gt; &lt;span style=&#34;color:#e67e80&#34;&gt;struct&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; size;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    HashNode&lt;span style=&#34;color:#7a8478&#34;&gt;**&lt;/span&gt; buckets;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;} HashTable;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;初始化&#34;&gt;初始化&lt;/h2&gt;&#xA;&lt;p&gt;创建HashTable结构体变量，进行初始化赋值，分配桶的内存。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 初始化哈希表&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;HashTable &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;creat_hash_table&lt;/span&gt;(&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; size)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    HashTable&lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; table &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; (HashTable&lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt;)&lt;span style=&#34;color:#b2c98f&#34;&gt;malloc&lt;/span&gt;(&lt;span style=&#34;color:#e67e80&#34;&gt;sizeof&lt;/span&gt;(HashTable));&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    table&lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt;size &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; size;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    table&lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt;buckets &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; (HashNode&lt;span style=&#34;color:#7a8478&#34;&gt;**&lt;/span&gt;)&lt;span style=&#34;color:#b2c98f&#34;&gt;malloc&lt;/span&gt;(size &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#e67e80&#34;&gt;sizeof&lt;/span&gt;(HashNode&lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt;));&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;for&lt;/span&gt;(&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; i &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;; i &lt;span style=&#34;color:#7a8478&#34;&gt;&amp;lt;&lt;/span&gt; size; i&lt;span style=&#34;color:#7a8478&#34;&gt;++&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        table&lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt;buckets[i] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;NULL&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;return&lt;/span&gt; table;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;哈希函数&#34;&gt;哈希函数&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 哈希函数&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;hash&lt;/span&gt;(&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; key, &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; size)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;return&lt;/span&gt; key &lt;span style=&#34;color:#7a8478&#34;&gt;%&lt;/span&gt; size;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;通过简单取模运算获得哈希值&lt;/p&gt;&#xA;&lt;h2 id=&#34;插入&#34;&gt;插入&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 插入&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;insert&lt;/span&gt;(HashTable &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt;table, &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; key, &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; value)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; index &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;hash&lt;/span&gt;(key, table&lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt;size);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    HashNode &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt;newNode &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; (HashNode &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt;)&lt;span style=&#34;color:#b2c98f&#34;&gt;malloc&lt;/span&gt;(&lt;span style=&#34;color:#e67e80&#34;&gt;sizeof&lt;/span&gt;(HashNode));&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    newNode&lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt;key &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; key;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    newNode&lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt;value &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; value;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    newNode&lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt;next &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;NULL&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 插入链表头部，避免遍历链表&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;if&lt;/span&gt; (table&lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt;buckets[index] &lt;span style=&#34;color:#7a8478&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;NULL&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        table&lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt;buckets[index] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; newNode;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        newNode&lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt;next &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; table&lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt;buckets[index];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        table&lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt;buckets[index] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; newNode;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;头插法无需遍历到尾部。&lt;/p&gt;&#xA;&lt;h2 id=&#34;查找&#34;&gt;查找&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 查找&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;search&lt;/span&gt;(HashTable &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt;table, &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; key)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; index &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;hash&lt;/span&gt;(key, table&lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt;size);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    HashNode &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt;current &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; table&lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt;buckets[index];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;while&lt;/span&gt; (current &lt;span style=&#34;color:#7a8478&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;NULL&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;if&lt;/span&gt; (current&lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt;key &lt;span style=&#34;color:#7a8478&#34;&gt;==&lt;/span&gt; key)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;return&lt;/span&gt; current&lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt;value;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        current &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; current&lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt;next;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#7a8478&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;删除&#34;&gt;删除&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;deleate&lt;/span&gt;(HashTable&lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; table, &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; key)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; index &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;hash&lt;/span&gt;(key, table&lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt;size);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;HashNode&lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; current &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; table&lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt;buckets[index];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;HashNode&lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; prev &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;NULL&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#e67e80&#34;&gt;while&lt;/span&gt;(current &lt;span style=&#34;color:#7a8478&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;NULL&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#e67e80&#34;&gt;if&lt;/span&gt;(current&lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt;key &lt;span style=&#34;color:#7a8478&#34;&gt;==&lt;/span&gt; key)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#e67e80&#34;&gt;if&lt;/span&gt;(prev &lt;span style=&#34;color:#7a8478&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;NULL&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;table&lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt;buckets[index] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; current&lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt;next;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#e67e80&#34;&gt;else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;prev&lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt;next &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; current&lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt;next;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#b2c98f&#34;&gt;free&lt;/span&gt;(current);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#e67e80&#34;&gt;return&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;prev &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; current;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;current &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; current&lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt;next;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>【数据结构与算法】众数、中位数</title>
      <link>https://blog.verdant.ee/posts/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95%E4%BC%97%E6%95%B0%E4%B8%AD%E4%BD%8D%E6%95%B0/</link>
      <pubDate>Tue, 27 May 2025 19:41:53 +0000</pubDate><author>i@glowisle.me (五葉地錦)</author>
      <guid>https://blog.verdant.ee/posts/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95%E4%BC%97%E6%95%B0%E4%B8%AD%E4%BD%8D%E6%95%B0/</guid>
      <description>&lt;p&gt;今天学这个东西的时候，看到这种线性的数据结构加上排序步骤，很难不想写个程序来跑跑。&lt;/p&gt;&#xA;&lt;p&gt;先来说说中位数，这个比较有思路。&lt;/p&gt;&#xA;&lt;h2 id=&#34;中位数&#34;&gt;中位数&lt;/h2&gt;&#xA;&lt;p&gt;具体的操作步骤应该是：&lt;strong&gt;排序 =&amp;gt; 获得数据元素个数n =&amp;gt; 是奇数 ? (n+1) / 2 : n / 2&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;那么排序就用之前学的冒泡排序，这种题目大概不会完全倒序给数据，编写sort函数：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;sort&lt;/span&gt;(&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; arr[], &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; n)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e67e80&#34;&gt;for&lt;/span&gt; (&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; i &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;; i &lt;span style=&#34;color:#7a8478&#34;&gt;&amp;lt;&lt;/span&gt; n &lt;span style=&#34;color:#7a8478&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;; i&lt;span style=&#34;color:#7a8478&#34;&gt;++&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;for&lt;/span&gt; (&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; j &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;; j &lt;span style=&#34;color:#7a8478&#34;&gt;&amp;lt;&lt;/span&gt; n &lt;span style=&#34;color:#7a8478&#34;&gt;-&lt;/span&gt; i &lt;span style=&#34;color:#7a8478&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;; j&lt;span style=&#34;color:#7a8478&#34;&gt;++&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#e67e80&#34;&gt;if&lt;/span&gt; (arr[j] &lt;span style=&#34;color:#7a8478&#34;&gt;&amp;gt;&lt;/span&gt; arr[j &lt;span style=&#34;color:#7a8478&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;]) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; temp &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; arr[j];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        arr[j] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; arr[j &lt;span style=&#34;color:#7a8478&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        arr[j &lt;span style=&#34;color:#7a8478&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; temp;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;接下来是判断奇偶，奇偶的判断非常简单，对取模运算的值比对就可以，编写is_even函数，判断奇偶性。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;is_even&lt;/span&gt;(&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; data)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e67e80&#34;&gt;if&lt;/span&gt; (data &lt;span style=&#34;color:#7a8478&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;2&lt;/span&gt; &lt;span style=&#34;color:#7a8478&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;true&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  } &lt;span style=&#34;color:#e67e80&#34;&gt;else&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;false&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;完成了奇偶判断，下一步就可以正式进行中位数的运算，编写get_median函数。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;double&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;get_median&lt;/span&gt;(&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; arr[], &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; length)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 获取索引&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#dbbc7f&#34;&gt;double&lt;/span&gt; result &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#b2c98f&#34;&gt;sort&lt;/span&gt;(arr, length);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e67e80&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#b2c98f&#34;&gt;is_even&lt;/span&gt;(length)) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; median_index_1 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; arr[(length &lt;span style=&#34;color:#7a8478&#34;&gt;/&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;2&lt;/span&gt;) &lt;span style=&#34;color:#7a8478&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; median_index_2 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; arr[length &lt;span style=&#34;color:#7a8478&#34;&gt;/&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;2&lt;/span&gt;];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 计算数据&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    result &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; (median_index_1 &lt;span style=&#34;color:#7a8478&#34;&gt;+&lt;/span&gt; median_index_2) &lt;span style=&#34;color:#7a8478&#34;&gt;/&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;2.0&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  } &lt;span style=&#34;color:#e67e80&#34;&gt;else&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    result &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; arr[length &lt;span style=&#34;color:#7a8478&#34;&gt;/&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;2&lt;/span&gt;];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e67e80&#34;&gt;return&lt;/span&gt; result;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这个函数首先计算了中位数在数组的哪个索引，然后进行了计算。&lt;/p&gt;&#xA;&lt;h2 id=&#34;众数&#34;&gt;众数&lt;/h2&gt;&#xA;&lt;p&gt;众数（Mode）是指在&lt;a href=&#34;https://baike.baidu.com/item/%E7%BB%9F%E8%AE%A1%E5%88%86%E5%B8%83/8478867?fromModule=lemma_inlink&#34;&gt;统计分布&lt;/a&gt;上具有明显集中趋势点的&lt;a href=&#34;https://baike.baidu.com/item/%E6%95%B0%E5%80%BC/2013853?fromModule=lemma_inlink&#34;&gt;数值&lt;/a&gt;，代表&lt;a href=&#34;https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE/33305?fromModule=lemma_inlink&#34;&gt;数据&lt;/a&gt;的一般水平。 也是一组数据中出现次数最多的数值，有时众数在一组数中有好几个。用M表示。&lt;/p&gt;&#xA;&lt;p&gt;那么，在程序中，想要计算一个值出现的次数并比对，可拆分为两步。&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;计算出每一个数据出现的次数&lt;/li&gt;&#xA;&lt;li&gt;结果排序比对&lt;/li&gt;&#xA;&lt;li&gt;找出最大值&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;我没学过什么高级的数据结构，就用这个复制数组的笨办法吧。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;get_mode&lt;/span&gt;(&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; arr[], &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; length)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt;copy_arr &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;malloc&lt;/span&gt;(length &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#e67e80&#34;&gt;sizeof&lt;/span&gt;(&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt;));&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#b2c98f&#34;&gt;memcpy&lt;/span&gt;(copy_arr, arr, length &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#e67e80&#34;&gt;sizeof&lt;/span&gt;(&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt;));&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#b2c98f&#34;&gt;sort&lt;/span&gt;(copy_arr, length);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; max_count &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; current_count &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; mode &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; copy_arr[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e67e80&#34;&gt;for&lt;/span&gt; (&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; i &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;; i &lt;span style=&#34;color:#7a8478&#34;&gt;&amp;lt;&lt;/span&gt; length; i&lt;span style=&#34;color:#7a8478&#34;&gt;++&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;if&lt;/span&gt; (copy_arr[i] &lt;span style=&#34;color:#7a8478&#34;&gt;==&lt;/span&gt; copy_arr[i &lt;span style=&#34;color:#7a8478&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;]) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      current_count&lt;span style=&#34;color:#7a8478&#34;&gt;++&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    } &lt;span style=&#34;color:#e67e80&#34;&gt;else&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#e67e80&#34;&gt;if&lt;/span&gt; (current_count &lt;span style=&#34;color:#7a8478&#34;&gt;&amp;gt;&lt;/span&gt; max_count) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        max_count &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; current_count;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        mode &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; copy_arr[i &lt;span style=&#34;color:#7a8478&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      current_count &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e67e80&#34;&gt;if&lt;/span&gt; (current_count &lt;span style=&#34;color:#7a8478&#34;&gt;&amp;gt;&lt;/span&gt; max_count) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    mode &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; copy_arr[length &lt;span style=&#34;color:#7a8478&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#b2c98f&#34;&gt;free&lt;/span&gt;(copy_arr);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e67e80&#34;&gt;return&lt;/span&gt; mode;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这个函数干了以下几件事：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;复制数组&lt;/li&gt;&#xA;&lt;li&gt;排序复制好的数组&lt;/li&gt;&#xA;&lt;li&gt;对比数组元素，如果array[i] == array[i - 1]，出现次数+1&lt;/li&gt;&#xA;&lt;li&gt;如果遇到新元素，检查是否需要更新最大值&lt;/li&gt;&#xA;&lt;li&gt;动态更新众数值&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;测试跑一把，输出如下&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;main&lt;/span&gt;()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; arr[] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;4&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;5&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;7&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;4&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;4&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;4&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;4&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;4&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;4&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;4&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;4&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;4&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2&lt;/span&gt;};&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; length &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e67e80&#34;&gt;sizeof&lt;/span&gt;(arr) &lt;span style=&#34;color:#7a8478&#34;&gt;/&lt;/span&gt; &lt;span style=&#34;color:#e67e80&#34;&gt;sizeof&lt;/span&gt;(arr[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;]);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; result &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;get_mode&lt;/span&gt;(arr, length);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#b2c98f&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;result = %d&lt;/span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;&lt;/span&gt;, result);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;result = 4&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;del&gt;这个办法实在是有点蠢，找时间仔细学学哈希表，应该能更快。&lt;/del&gt;&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>【数据结构与算法】二叉树</title>
      <link>https://blog.verdant.ee/posts/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95%E4%BA%8C%E5%8F%89%E6%A0%91/</link>
      <pubDate>Sun, 25 May 2025 18:46:37 +0000</pubDate><author>i@glowisle.me (五葉地錦)</author>
      <guid>https://blog.verdant.ee/posts/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95%E4%BA%8C%E5%8F%89%E6%A0%91/</guid>
      <description>&lt;h2 id=&#34;定义&#34;&gt;定义&lt;/h2&gt;&#xA;&lt;p&gt;二叉树（binary tree）是指树中节点的度不大于2的有序树，它是一种最简单且最重要的树。二叉树的递归定义为：二叉树是一棵空树，或者是一棵由一个根节点和两棵互不相交的，分别称作根的左子树和右子树组成的非空树；左子树和右子树又同样都是二叉树。&lt;/p&gt;&#xA;&lt;h2 id=&#34;实现&#34;&gt;实现&lt;/h2&gt;&#xA;&lt;h3 id=&#34;结构定义&#34;&gt;结构定义&lt;/h3&gt;&#xA;&lt;p&gt;&lt;del&gt;尝试了一下C语言，各种指针乱指，各种bug，暂时放自己一马，跟自己和解一下用js写写吧。&lt;/del&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;class&lt;/span&gt; TreeNode {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  constructor(data) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.data &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; data;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.left &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e67e80&#34;&gt;null&lt;/span&gt;;  &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 左节点&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.right &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e67e80&#34;&gt;null&lt;/span&gt;; &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 右边节点&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;创建对象并绑定节点&#34;&gt;创建对象并绑定节点&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 手动绑定节点&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;let&lt;/span&gt; root &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; TreeNode(&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;root.left &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; TreeNode(&lt;span style=&#34;color:#d699b6&#34;&gt;2&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;root.right &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; TreeNode(&lt;span style=&#34;color:#d699b6&#34;&gt;3&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;root.left.left &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; TreeNode(&lt;span style=&#34;color:#d699b6&#34;&gt;4&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;root.right.right &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; TreeNode(&lt;span style=&#34;color:#d699b6&#34;&gt;5&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;此时树的结构：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     /  \&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     2   3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   /  \   \&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  4    5   6&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;遍历二叉树&#34;&gt;遍历二叉树&lt;/h3&gt;&#xA;&lt;h4 id=&#34;前序遍历dfs&#34;&gt;前序遍历（DFS）&lt;/h4&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;function&lt;/span&gt; preOrder(node) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e67e80&#34;&gt;if&lt;/span&gt;(node) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    console.log(node.data)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    preOrder(node.left)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    preOrder(node.right)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这里用递归调用，遍历到左右元素&lt;/p&gt;&#xA;&lt;h4 id=&#34;层序遍历bfs&#34;&gt;层序遍历（BFS）&lt;/h4&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;function&lt;/span&gt; levelOrder(root) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e67e80&#34;&gt;const&lt;/span&gt; queue &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; [];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  queue.push(root);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e67e80&#34;&gt;while&lt;/span&gt; (queue.length) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;const&lt;/span&gt; node &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; queue.shift();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    console.log(node.data);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;if&lt;/span&gt; (node.left) queue.push(node.left);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;if&lt;/span&gt; (node.right) queue.push(node.right);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>【数据结构与算法】栈</title>
      <link>https://blog.verdant.ee/posts/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95%E6%A0%88/</link>
      <pubDate>Sun, 11 May 2025 10:09:21 +0000</pubDate><author>i@glowisle.me (五葉地錦)</author>
      <guid>https://blog.verdant.ee/posts/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95%E6%A0%88/</guid>
      <description>&lt;h2 id=&#34;基本概念&#34;&gt;基本概念&lt;/h2&gt;&#xA;&lt;p&gt;栈（Stack）是一种后进先出（LIFO）原则的线性数据结构。核心操作包括：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;压栈（Push）：将元素添加到栈顶&lt;/li&gt;&#xA;&lt;li&gt;出栈（Pop）：移除并返回栈顶元素&lt;/li&gt;&#xA;&lt;li&gt;查看栈顶（Check）获取但移除栈顶元素&lt;/li&gt;&#xA;&lt;li&gt;判空（is_empty）检查栈是否为空&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;结构定义&#34;&gt;结构定义&lt;/h2&gt;&#xA;&lt;p&gt;使用动态数组实现栈，包含三个核心属性：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;typedef&lt;/span&gt; &lt;span style=&#34;color:#e67e80&#34;&gt;struct&lt;/span&gt; Stack {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; data; &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 存储元素的数组&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; top;   &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 栈顶指针（当前元素位置）&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; capacity; &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 栈的最大容量&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;data&lt;/code&gt;：动态分配的数组指针&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;top&lt;/code&gt;：初始值为-1，表示空栈，压栈时递增，出栈时递减&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;capacity&lt;/code&gt;：栈的容量上限&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;功能实现&#34;&gt;功能实现&lt;/h2&gt;&#xA;&lt;h3 id=&#34;初始化&#34;&gt;初始化&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 初始化栈&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;init_stack&lt;/span&gt;(Stack &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt;s, &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; capacity) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 计算最大容量&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  s &lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt; data &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; (&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt;)&lt;span style=&#34;color:#b2c98f&#34;&gt;malloc&lt;/span&gt;(&lt;span style=&#34;color:#e67e80&#34;&gt;sizeof&lt;/span&gt;(&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt;) &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; capacity)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e67e80&#34;&gt;if&lt;/span&gt;(&lt;span style=&#34;color:#7a8478&#34;&gt;!&lt;/span&gt;s &lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt; data) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#b2c98f&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;内存分配失败！&lt;/span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#b2c98f&#34;&gt;exit&lt;/span&gt;(&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 初始化栈顶为-1，表空&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  s &lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt; top &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#7a8478&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 把当前计算的最大容量赋值给传进来的栈&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  s &lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt; capacity &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; capacity;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这个函数中进行了动态分配内存计算最大容量，初始化赋值和异常处理。&lt;/p&gt;&#xA;&lt;h3 id=&#34;压栈push&#34;&gt;压栈（Push）&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 压栈（Push）&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;push&lt;/span&gt;(Stack &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt;s, &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; value) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e67e80&#34;&gt;if&lt;/span&gt; (s &lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt; top &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; s &lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt; capacity &lt;span style=&#34;color:#7a8478&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#b2c98f&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;栈已满！&lt;/span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;return&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  s &lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt; data[&lt;span style=&#34;color:#7a8478&#34;&gt;++&lt;/span&gt;s&lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt;top] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; value;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;检查栈是否已满，先递增指针再存入数据&lt;/p&gt;&#xA;&lt;h3 id=&#34;出栈pop&#34;&gt;出栈（Pop）&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 出栈（Pop）&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;pop&lt;/span&gt;(Stack &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt;s) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e67e80&#34;&gt;if&lt;/span&gt;(&lt;span style=&#34;color:#b2c98f&#34;&gt;is_empty&lt;/span&gt;(s)) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#b2c98f&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;栈为空！&lt;/span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#7a8478&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e67e80&#34;&gt;return&lt;/span&gt; s&lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt;data[s&lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt;top&lt;span style=&#34;color:#7a8478&#34;&gt;--&lt;/span&gt;];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;检查栈是否为空，返回当前栈顶元素后移动指针&lt;/p&gt;&#xA;&lt;h3 id=&#34;辅助功能&#34;&gt;辅助功能&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 判空&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;is_empty&lt;/span&gt;(Stack &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt;s) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e67e80&#34;&gt;return&lt;/span&gt; s&lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt; top &lt;span style=&#34;color:#7a8478&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#7a8478&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 查看栈顶元素&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;peek&lt;/span&gt;(Stack &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt;s) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e67e80&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;is_empty&lt;/span&gt;(s) &lt;span style=&#34;color:#7a8478&#34;&gt;?&lt;/span&gt; &lt;span style=&#34;color:#7a8478&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#7a8478&#34;&gt;:&lt;/span&gt; s&lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt;data[s&lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt;top];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 销毁&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;destory_stack&lt;/span&gt;(Stack &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt;S) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#b2c98f&#34;&gt;free&lt;/span&gt;(s&lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt;data);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  s &lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt; top &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#7a8478&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  s &lt;span style=&#34;color:#7a8478&#34;&gt;-&amp;gt;&lt;/span&gt; capacity &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>【数据结构与算法】冒泡排序</title>
      <link>https://blog.verdant.ee/posts/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95%E5%86%92%E6%B3%A1%E6%8E%92%E5%BA%8F/</link>
      <pubDate>Sat, 10 May 2025 20:06:05 +0000</pubDate><author>i@glowisle.me (五葉地錦)</author>
      <guid>https://blog.verdant.ee/posts/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95%E5%86%92%E6%B3%A1%E6%8E%92%E5%BA%8F/</guid>
      <description>&lt;h2 id=&#34;核心思想&#34;&gt;核心思想&lt;/h2&gt;&#xA;&lt;p&gt;通过相邻元素的两两比较，将较大的元素逐步“冒泡”到数组末尾，每轮排序确定一个最大元素的最终位置。&lt;/p&gt;&#xA;&lt;h2 id=&#34;代码实现&#34;&gt;代码实现&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;bubble_sort&lt;/span&gt;(&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; arr[], &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; n) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 最外层控制循环轮数 n-1轮&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e67e80&#34;&gt;for&lt;/span&gt; (&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; i &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;; i &lt;span style=&#34;color:#7a8478&#34;&gt;&amp;lt;&lt;/span&gt; n &lt;span style=&#34;color:#7a8478&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;; i&lt;span style=&#34;color:#7a8478&#34;&gt;++&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 内层循环处理相邻元素比较和交换&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;for&lt;/span&gt;(&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; j &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;; j &lt;span style=&#34;color:#7a8478&#34;&gt;&amp;lt;&lt;/span&gt; n&lt;span style=&#34;color:#7a8478&#34;&gt;-&lt;/span&gt;i&lt;span style=&#34;color:#7a8478&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;; j&lt;span style=&#34;color:#7a8478&#34;&gt;++&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#e67e80&#34;&gt;if&lt;/span&gt; (arr[j] &lt;span style=&#34;color:#7a8478&#34;&gt;&amp;gt;&lt;/span&gt; arr[j&lt;span style=&#34;color:#7a8478&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;]) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; temp &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; arr[j];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        arr[j] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; arr[j&lt;span style=&#34;color:#7a8478&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        arr[j&lt;span style=&#34;color:#7a8478&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; temp;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 调用&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;print_array&lt;/span&gt;(&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; arr[], &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; size) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e67e80&#34;&gt;for&lt;/span&gt; (&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; i &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;; i &lt;span style=&#34;color:#7a8478&#34;&gt;&amp;lt;&lt;/span&gt; size; i&lt;span style=&#34;color:#7a8478&#34;&gt;++&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#b2c98f&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;%d,&amp;#34;&lt;/span&gt;, arr[i]);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#b2c98f&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;main&lt;/span&gt;() {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; arr[] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#d699b6&#34;&gt;23&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;232&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;55&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;7&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;576&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;342&lt;/span&gt;};&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; n &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e67e80&#34;&gt;sizeof&lt;/span&gt;(arr) &lt;span style=&#34;color:#7a8478&#34;&gt;/&lt;/span&gt; &lt;span style=&#34;color:#e67e80&#34;&gt;sizeof&lt;/span&gt;(arr[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;]);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#b2c98f&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;排序前：&amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#b2c98f&#34;&gt;print_array&lt;/span&gt;(arr, n);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#b2c98f&#34;&gt;bubble_sort&lt;/span&gt;(arr, n);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#b2c98f&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;排序后&amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#b2c98f&#34;&gt;print_array&lt;/span&gt;(arr, n);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;原理分析&#34;&gt;原理分析&lt;/h2&gt;&#xA;&lt;h3 id=&#34;外层循环的-i--n---1&#34;&gt;外层循环的 i &amp;lt; n - 1&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;n个元素的数组最多需要n-1轮冒泡，如5元素数组需要4轮排序&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;数学依据&lt;/strong&gt;：每轮将一个最大值“沉底”，当完成n-1轮时，最后一个元素必然有序&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;示例验证：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;原始数组：[3, 1, 4, 2]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;第一轮：[1, 3, 2, 4] （确定最大值4）&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;第二轮：[1, 2, 3, 4]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;用文字解释上面的函数，原理就是在循环中对比数组第i个元素和i+1（即后一位）元素的大小，若i &amp;gt; i +1 则把两者交换位置，随着循环的进行，数组就会被排序。&lt;/p&gt;&#xA;&lt;h3 id=&#34;内层循环的-j--n---i---1&#34;&gt;内层循环的 j &amp;lt; n - i - 1&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;动态缩小范围：每轮结束后末尾i个元素已有序&lt;/li&gt;&#xA;&lt;li&gt;比较次数：第i轮需要比较(n-1)-i次相邻元素&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;想象一下数组的线性结构，实际上就是在计算排序后的一位的前一位，这样就不会处理已经排序好的元素，进入下一轮循环时可正常排序。&lt;/p&gt;&#xA;&lt;h3 id=&#34;数组长度n的计算机制&#34;&gt;数组长度n的计算机制&lt;/h3&gt;&#xA;&lt;p&gt;在main函数中，对于n的计算，采用了&lt;code&gt;sizeof(arr) / sizeof(arr[0])&lt;/code&gt;的方式。可以这么理解。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; arr[] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#d699b6&#34;&gt;6&lt;/span&gt;,&lt;span style=&#34;color:#d699b6&#34;&gt;4&lt;/span&gt;,&lt;span style=&#34;color:#d699b6&#34;&gt;8&lt;/span&gt;,&lt;span style=&#34;color:#d699b6&#34;&gt;2&lt;/span&gt;};&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;假设int占用4字节，计算整个数组的内存占用&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;sizeof&lt;/span&gt;(arr) &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;5&lt;/span&gt; &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;4&lt;/span&gt; &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;20&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;sizeof&lt;/span&gt;(arr[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;]) &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;4&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;n &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;20&lt;/span&gt; &lt;span style=&#34;color:#7a8478&#34;&gt;/&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;4&lt;/span&gt; &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;5&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;计算出数组的总占用，再除以单个占用，就可以得到元素个数了。&lt;/p&gt;&#xA;&lt;h3 id=&#34;参数n的作用&#34;&gt;参数n的作用&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;循环控制：确定外层循环次数n-1次&lt;/li&gt;&#xA;&lt;li&gt;边界保护，防止越界&lt;/li&gt;&#xA;&lt;li&gt;效率优化：避免无效比较，如j&amp;lt;n-i-1&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;最坏情况&#34;&gt;最坏情况&lt;/h2&gt;&#xA;&lt;p&gt;冒泡排序的最坏情况发生在&lt;strong&gt;输入数组完全逆序情况下&lt;/strong&gt;，此时算法需要进行最大次数的比较和交换操作，时间复杂度达到最高。&lt;/p&gt;&#xA;&lt;p&gt;当待排序数组的初始状态为完全逆序，如[5,4,3,2,1]，每一轮外层循环都要将当前为排序部分的最大元素冒泡到正确位置，而且每次比较都会发生交换，此时：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;比较次数&lt;/strong&gt;： 共需要进行*(n - 1) + (n - 2) + &amp;hellip;*（等差数列求和）。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;交换次数&lt;/strong&gt;： 每次比较均需要交换，总交换次数也为上式结果。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
  </channel>
</rss>
