mirror of
https://github.com/krahets/hello-algo.git
synced 2025-07-28 12:52:57 +08:00
deploy
This commit is contained in:
@ -4647,11 +4647,11 @@
|
||||
</div>
|
||||
<h3 id="2">2. 基于数组的实现<a class="headerlink" href="#2" title="Permanent link">¶</a></h3>
|
||||
<p>由于数组删除首元素的时间复杂度为 <span class="arithmatex">\(O(n)\)</span> ,这会导致出队操作效率较低。然而,我们可以采用以下巧妙方法来避免这个问题。</p>
|
||||
<p>我们可以使用一个变量 <code>front</code> 指向队首元素的索引,并维护一个变量 <code>queSize</code> 用于记录队列长度。定义 <code>rear = front + queSize</code> ,这个公式计算出的 <code>rear</code> 指向队尾元素之后的下一个位置。</p>
|
||||
<p>我们可以使用一个变量 <code>front</code> 指向队首元素的索引,并维护一个变量 <code>size</code> 用于记录队列长度。定义 <code>rear = front + size</code> ,这个公式计算出的 <code>rear</code> 指向队尾元素之后的下一个位置。</p>
|
||||
<p>基于此设计,<strong>数组中包含元素的有效区间为 <code>[front, rear - 1]</code></strong>,各种操作的实现方法如图 5-6 所示。</p>
|
||||
<ul>
|
||||
<li>入队操作:将输入元素赋值给 <code>rear</code> 索引处,并将 <code>queSize</code> 增加 1 。</li>
|
||||
<li>出队操作:只需将 <code>front</code> 增加 1 ,并将 <code>queSize</code> 减少 1 。</li>
|
||||
<li>入队操作:将输入元素赋值给 <code>rear</code> 索引处,并将 <code>size</code> 增加 1 。</li>
|
||||
<li>出队操作:只需将 <code>front</code> 增加 1 ,并将 <code>size</code> 减少 1 。</li>
|
||||
</ul>
|
||||
<p>可以看到,入队和出队操作都只需进行一次操作,时间复杂度均为 <span class="arithmatex">\(O(1)\)</span> 。</p>
|
||||
<div class="tabbed-set tabbed-alternate" data-tabs="4:3"><input checked="checked" id="__tabbed_4_1" name="__tabbed_4" type="radio" /><input id="__tabbed_4_2" name="__tabbed_4" type="radio" /><input id="__tabbed_4_3" name="__tabbed_4" type="radio" /><div class="tabbed-labels"><label for="__tabbed_4_1">ArrayQueue</label><label for="__tabbed_4_2">push()</label><label for="__tabbed_4_3">pop()</label></div>
|
||||
|
Reference in New Issue
Block a user