This commit is contained in:
krahets
2023-03-23 18:57:04 +08:00
parent 129c80e04b
commit 3222b84a5b
28 changed files with 253 additions and 265 deletions

View File

@ -2866,7 +2866,7 @@ O(1) < O(\log n) < O(n) < O(n \log n) < O(n^2) < O(2^n) < O(n!
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">time_complexity.py</span><pre><span></span><code><a id="__codelineno-62-1" name="__codelineno-62-1" href="#__codelineno-62-1"></a><span class="k">def</span> <span class="nf">array_traversal</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">])</span> <span class="o">-&gt;</span> <span class="nb">int</span><span class="p">:</span>
<div class="highlight"><span class="filename">time_complexity.py</span><pre><span></span><code><a id="__codelineno-62-1" name="__codelineno-62-1" href="#__codelineno-62-1"></a><span class="k">def</span> <span class="nf">array_traversal</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">int</span><span class="p">])</span> <span class="o">-&gt;</span> <span class="nb">int</span><span class="p">:</span>
<a id="__codelineno-62-2" name="__codelineno-62-2" href="#__codelineno-62-2"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot; 线性阶(遍历数组)&quot;&quot;&quot;</span>
<a id="__codelineno-62-3" name="__codelineno-62-3" href="#__codelineno-62-3"></a> <span class="n">count</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>
<a id="__codelineno-62-4" name="__codelineno-62-4" href="#__codelineno-62-4"></a> <span class="c1"># 循环次数与数组长度成正比</span>
@ -3145,7 +3145,7 @@ O((n - 1) \frac{n}{2}) = O(n^2)
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">time_complexity.py</span><pre><span></span><code><a id="__codelineno-82-1" name="__codelineno-82-1" href="#__codelineno-82-1"></a><span class="k">def</span> <span class="nf">bubble_sort</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">])</span> <span class="o">-&gt;</span> <span class="nb">int</span><span class="p">:</span>
<div class="highlight"><span class="filename">time_complexity.py</span><pre><span></span><code><a id="__codelineno-82-1" name="__codelineno-82-1" href="#__codelineno-82-1"></a><span class="k">def</span> <span class="nf">bubble_sort</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">int</span><span class="p">])</span> <span class="o">-&gt;</span> <span class="nb">int</span><span class="p">:</span>
<a id="__codelineno-82-2" name="__codelineno-82-2" href="#__codelineno-82-2"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot; 平方阶(冒泡排序)&quot;&quot;&quot;</span>
<a id="__codelineno-82-3" name="__codelineno-82-3" href="#__codelineno-82-3"></a> <span class="n">count</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># 计数器</span>
<a id="__codelineno-82-4" name="__codelineno-82-4" href="#__codelineno-82-4"></a> <span class="c1"># 外循环:待排序元素数量为 n-1, n-2, ..., 1</span>
@ -4102,15 +4102,15 @@ n! = n \times (n - 1) \times (n - 2) \times \cdots \times 2 \times 1
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">worst_best_time_complexity.py</span><pre><span></span><code><a id="__codelineno-152-1" name="__codelineno-152-1" href="#__codelineno-152-1"></a><span class="k">def</span> <span class="nf">random_numbers</span><span class="p">(</span><span class="n">n</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]:</span>
<div class="highlight"><span class="filename">worst_best_time_complexity.py</span><pre><span></span><code><a id="__codelineno-152-1" name="__codelineno-152-1" href="#__codelineno-152-1"></a><span class="k">def</span> <span class="nf">random_numbers</span><span class="p">(</span><span class="n">n</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">[</span><span class="nb">int</span><span class="p">]:</span>
<a id="__codelineno-152-2" name="__codelineno-152-2" href="#__codelineno-152-2"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot; 生成一个数组,元素为: 1, 2, ..., n ,顺序被打乱 &quot;&quot;&quot;</span>
<a id="__codelineno-152-3" name="__codelineno-152-3" href="#__codelineno-152-3"></a> <span class="c1"># 生成数组 nums =: 1, 2, 3, ..., n</span>
<a id="__codelineno-152-4" name="__codelineno-152-4" href="#__codelineno-152-4"></a> <span class="n">nums</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">i</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">n</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)]</span>
<a id="__codelineno-152-4" name="__codelineno-152-4" href="#__codelineno-152-4"></a> <span class="n">nums</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">i</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">n</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)]</span>
<a id="__codelineno-152-5" name="__codelineno-152-5" href="#__codelineno-152-5"></a> <span class="c1"># 随机打乱数组元素</span>
<a id="__codelineno-152-6" name="__codelineno-152-6" href="#__codelineno-152-6"></a> <span class="n">random</span><span class="o">.</span><span class="n">shuffle</span><span class="p">(</span><span class="n">nums</span><span class="p">)</span>
<a id="__codelineno-152-7" name="__codelineno-152-7" href="#__codelineno-152-7"></a> <span class="k">return</span> <span class="n">nums</span>
<a id="__codelineno-152-8" name="__codelineno-152-8" href="#__codelineno-152-8"></a>
<a id="__codelineno-152-9" name="__codelineno-152-9" href="#__codelineno-152-9"></a><span class="k">def</span> <span class="nf">find_one</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">])</span> <span class="o">-&gt;</span> <span class="nb">int</span><span class="p">:</span>
<a id="__codelineno-152-9" name="__codelineno-152-9" href="#__codelineno-152-9"></a><span class="k">def</span> <span class="nf">find_one</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">int</span><span class="p">])</span> <span class="o">-&gt;</span> <span class="nb">int</span><span class="p">:</span>
<a id="__codelineno-152-10" name="__codelineno-152-10" href="#__codelineno-152-10"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot; 查找数组 nums 中数字 1 所在索引 &quot;&quot;&quot;</span>
<a id="__codelineno-152-11" name="__codelineno-152-11" href="#__codelineno-152-11"></a> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">nums</span><span class="p">)):</span>
<a id="__codelineno-152-12" name="__codelineno-152-12" href="#__codelineno-152-12"></a> <span class="c1"># 当元素 1 在数组头部时,达到最佳时间复杂度 O(1)</span>