diff --git a/docs/chapter_array_and_linkedlist/array.md b/docs/chapter_array_and_linkedlist/array.md index bba71f0..c6f2fec 100644 --- a/docs/chapter_array_and_linkedlist/array.md +++ b/docs/chapter_array_and_linkedlist/array.md @@ -65,13 +65,13 @@ comments: true === "C" ```c title="array.c" - + ``` === "C#" ```csharp title="array.cs" - + ``` ## 数组优点 @@ -131,7 +131,7 @@ elementAddr = firtstElementAddr + elementLength * elementIndex === "Go" ```go title="array.go" - + ``` === "JavaScript" @@ -163,13 +163,13 @@ elementAddr = firtstElementAddr + elementLength * elementIndex === "C" ```c title="array.c" - + ``` === "C#" ```csharp title="array.cs" - + ``` ## 数组缺点 @@ -227,7 +227,7 @@ elementAddr = firtstElementAddr + elementLength * elementIndex === "Go" ```go title="array.go" - + ``` === "JavaScript" @@ -265,19 +265,19 @@ elementAddr = firtstElementAddr + elementLength * elementIndex === "C" ```c title="array.c" - + ``` === "C#" ```csharp title="array.cs" - + ``` **数组中插入或删除元素效率低下。** 假设我们想要在数组中间某位置插入一个元素,由于数组元素在内存中是 “紧挨着的” ,它们之间没有空间再放任何数据。因此,我们不得不将此索引之后的所有元素都向后移动一位,然后再把元素赋值给该索引。删除元素也是类似,需要把此索引之后的元素都向前移动一位。总体看有以下缺点: - **时间复杂度高:** 数组的插入和删除的平均时间复杂度均为 $O(N)$ ,其中 $N$ 为数组长度。 -- **丢失元素或:** 由于数组的长度不可变,因此在插入元素后,数组原来的末尾元素会丢失。 +- **丢失元素:** 由于数组的长度不可变,因此在插入元素后,超出数组长度范围的元素会被丢失。 - **内存浪费:** 我们一般会初始化一个比较长的数组,只用前面一部分,这样在插入数据时,丢失的末尾元素都是我们不关心的,但这样做同时也会造成内存空间的浪费。 ![array_insert_remove_element](array.assets/array_insert_remove_element.png) @@ -318,7 +318,7 @@ elementAddr = firtstElementAddr + elementLength * elementIndex // 将 num 赋给 index 处元素 nums[index] = num; } - + /* 删除索引 index 处元素 */ void remove(int* nums, int size, int index) { // 把索引 index 之后的所有元素向前移动一位 @@ -338,7 +338,7 @@ elementAddr = firtstElementAddr + elementLength * elementIndex nums[i] = nums[i - 1] # 将 num 赋给 index 处元素 nums[index] = num - + """ 删除索引 index 处元素 """ def remove(nums, index): # 把索引 index 之后的所有元素向前移动一位 @@ -349,7 +349,7 @@ elementAddr = firtstElementAddr + elementLength * elementIndex === "Go" ```go title="array.go" - + ``` === "JavaScript" @@ -364,7 +364,7 @@ elementAddr = firtstElementAddr + elementLength * elementIndex // 将 num 赋给 index 处元素 nums[index] = num; } - + /* 删除索引 index 处元素 */ function remove(nums, index){ // 把索引 index 之后的所有元素向前移动一位 @@ -386,7 +386,7 @@ elementAddr = firtstElementAddr + elementLength * elementIndex // 将 num 赋给 index 处元素 nums[index] = num } - + /* 删除索引 index 处元素 */ function remove(nums: number[], index: number): void { // 把索引 index 之后的所有元素向前移动一位 @@ -399,13 +399,13 @@ elementAddr = firtstElementAddr + elementLength * elementIndex === "C" ```c title="array.c" - + ``` === "C#" ```csharp title="array.cs" - + ``` ## 数组常用操作 @@ -459,7 +459,7 @@ elementAddr = firtstElementAddr + elementLength * elementIndex === "Go" ```go title="array.go" - + ``` === "JavaScript" @@ -499,13 +499,13 @@ elementAddr = firtstElementAddr + elementLength * elementIndex === "C" ```c title="array.c" - + ``` === "C#" ```csharp title="array.cs" - + ``` **数组查找。** 通过遍历数组,查找数组内的指定元素,并输出对应索引。 @@ -550,7 +550,7 @@ elementAddr = firtstElementAddr + elementLength * elementIndex === "Go" ```go title="array.go" - + ``` === "JavaScript" @@ -583,13 +583,13 @@ elementAddr = firtstElementAddr + elementLength * elementIndex === "C" ```c title="array.c" - + ``` === "C#" ```csharp title="array.cs" - + ``` ## 数组典型应用 diff --git a/docs/chapter_preface/about_me.md b/docs/chapter_preface/about_me.md index 1b6dc2a..29bd0bd 100644 --- a/docs/chapter_preface/about_me.md +++ b/docs/chapter_preface/about_me.md @@ -10,4 +10,4 @@ comments: true
力扣(LeetCode)全网阅读量最高博主
分享近百道算法题解,累积回复数千读者的评论问题
-创作 LeetBook《图解算法数据结构》,已免费售出 21 万本
+创作 LeetBook《图解算法数据结构》,已免费售出 22 万本
diff --git a/docs/chapter_sorting/bubble_sort.md b/docs/chapter_sorting/bubble_sort.md index 1161850..488c575 100644 --- a/docs/chapter_sorting/bubble_sort.md +++ b/docs/chapter_sorting/bubble_sort.md @@ -6,7 +6,7 @@ comments: true 「冒泡排序 Bubble Sort」是一种最基础的排序算法,非常适合作为第一个学习的排序算法。顾名思义,「冒泡」是该算法的核心操作。 -!!! tip "为什么叫 “冒泡”" +!!! question "为什么叫 “冒泡”" 在水中,越大的泡泡浮力越大,所以最大的泡泡会最先浮到水面。 diff --git a/docs/log.md b/docs/log.md deleted file mode 100644 index 3a1d4d8..0000000 --- a/docs/log.md +++ /dev/null @@ -1,23 +0,0 @@ -# 更新日志 - -| 更新内容 | 日期 | -| ------------ | ---------- | -| 新增:算法无处不在 | 2022-10-10 | -| 新增:数组与链表 | 2022-10-15 | -| 新增:数据结构简介 | 2022-10-20 | -| 新增:前言 | 2022-10-23 | -| 新增:计算复杂度 | 2022-11-03 | -| 更新:配图 | 2022-11-04 | -| 新增:数据与内存 | 2022-11-05 | -| 更新:各章节 Java 代码 | 2022-11-06 | -| 更新:列表 Java 代码、配图 | 2022-11-07 | -| 新增:栈与队列 | 2022-11-09 | -| 新增:树 | 2022-11-12 | -| 新增:二叉搜索树更新:二叉树、表格居中 | 2022-11-13 | -| 更新:二叉搜索树 | 2022-11-14 | -| 更新:首页介绍 | 2022-11-15 | -| 更新:关于本书新增:如何使用本书新增:一起参与创作 | 2022-11-16 | -| 新增:查找算法 | 2022-11-19 | -| 更新:Markdown Stylesheet新增:冒泡排序、插入排序 | 2022-11-21 | -| 新增:快速排序 | 2022-11-22 | -| 新增:归并排序,更新:快速排序、关于本书 | 2022-11-23 |