This commit is contained in:
krahets 2023-02-13 16:26:27 +08:00
parent bf42e6f92c
commit ce9064e9d3
3 changed files with 16 additions and 12 deletions

View File

@ -311,18 +311,17 @@ comments: true
```javascript title="hash_map.js"
/* 遍历哈希表 */
// 遍历键值对 key->value
for (const entry of map.entries()) {
if (!entry) continue;
console.info(entry.key + ' -> ' + entry.val);
console.info('\n遍历键值对 Key->Value');
for (const [k, v] of map.entries()) {
console.info(k + ' -> ' + v);
}
// 单独遍历键 key
for (const key of map.keys()) {
console.info(key);
console.info('\n单独遍历键 Key');
for (const k of map.keys()) {
console.info(k);
}
// 单独遍历值 value
for (const val of map.values()) {
console.info(val);
console.info('\n单独遍历值 Value');
for (const v of map.values()) {
console.info(v);
}
```

View File

@ -1079,7 +1079,7 @@ comments: true
### 输入数据并建堆 *
如果我们想要直接输入一个列表并将其建堆,那么该怎么做呢?最直接地,考虑使用「元素入堆」方法,将列表元素依次入堆。元素入堆的时间复杂度为 $O(n)$ ,而平均长度为 $\frac{n}{2}$ ,因此该方法的总体时间复杂度为 $O(n \log n)$ 。
如果我们想要直接输入一个列表并将其建堆,那么该怎么做呢?最直接地,考虑使用「元素入堆」方法,将列表元素依次入堆。元素入堆的时间复杂度为 $O(\log n)$ ,而平均长度为 $\frac{n}{2}$ ,因此该方法的总体时间复杂度为 $O(n \log n)$ 。
然而,存在一种更加优雅的建堆方法。设结点数量为 $n$ ,我们先将列表所有元素原封不动添加进堆,**然后迭代地对各个结点执行「从顶至底堆化」**。当然,**无需对叶结点执行堆化**,因为其没有子结点。

View File

@ -58,6 +58,12 @@ hide:
<h2 align="center"> 推荐语 </h2>
!!! quote
“如果我当年学数据结构与算法的时候有《Hello 算法》学起来应该会简单10倍
**—— 李沐,亚马逊资深首席科学家**
!!! quote
“一本通俗易懂的数据结构与算法入门书,引导读者手脑并用地学习,强烈推荐算法初学者阅读。”
@ -79,7 +85,6 @@ hide:
<div class="center-table">
<table>
<tbody>
<tr>
<td align="center"><a href="https://github.com/justin-tse"><img src="https://avatars.githubusercontent.com/u/24556310?v=4" width="50px;" alt="justin-tse"/><br /><sub><b>justin-tse</b></sub></a><br /><sub>JS / TS</sub></td>
<td align="center"><a href="https://github.com/krahets"><img src="https://avatars.githubusercontent.com/u/26993056?v=4" width="50px;" alt="krahets"/><br /><sub><b>krahets</b></sub></a><br /><sub>Java / Python</sub></td>
<td align="center"><a href="https://github.com/nuomi1"><img src="https://avatars.githubusercontent.com/u/3739017?v=4" width="50px;" alt="nuomi1"/><br /><sub><b>nuomi1</b></sub></a><br /><sub>Swift</sub></td>