diff --git a/notes/HTTP.md b/notes/HTTP.md index 37d723c9..a9237977 100644 --- a/notes/HTTP.md +++ b/notes/HTTP.md @@ -172,7 +172,7 @@ DELETE /file.html HTTP/1.1 > 要求用隧道协议连接代理 -要求在于代理服务器通信时建立隧道,使用 SSL(Secure Sokets Layer,安全套接字)和 TLS(Transport Layer Security,传输层安全)协议把通信内容加密后经网络隧道传输。 +要求在于代理服务器通信时建立隧道,使用 SSL(Secure Sockets Layer,安全套接层)和 TLS(Transport Layer Security,传输层安全)协议把通信内容加密后经网络隧道传输。 ```html CONNECT www.example.com:443 HTTP/1.1 diff --git a/notes/算法.md b/notes/算法.md index 41b62b2b..42954122 100644 --- a/notes/算法.md +++ b/notes/算法.md @@ -354,7 +354,7 @@ public class UF { 但是 union 操作代价却很高,需要将其中一个连通分量中的所有节点 id 值都修改为另一个节点的 id 值。 -

+

```java public int find(int p) { @@ -377,7 +377,7 @@ public void union(int p, int q) { 但是 find 操作开销很大,因为同一个连通分量的节点 id 值不同,id 值只是用来指向另一个节点。因此需要一直向上查找操作,直到找到最上层的节点。 -

+

```java public int find(int p) { @@ -654,7 +654,7 @@ public class QuickSort { ### 2. 切分 -取 a[lo] 作为切分元素,然后从数组的左端向右扫描直到找到第一个大于等于它的元素,再从数组的右端向左扫描找到第一个小于等于它的元素,交换这两个元素,并不断进行这个过程,就可以保证左指针 i 的左侧元素都不大于切分元素,右指针 j 的右侧元素都不小于切分元素。当两个指针相遇时,将切分元素 a[lo] 和左子数组最右侧的元素 a[j] 交换然后返回 j 即可。 +取 a[lo] 作为切分元素,然后从数组的左端向右扫描直到找到第一个大于等于它的元素,再从数组的右端向左扫描找到第一个小于等于它的元素,交换这两个元素,并不断进行这个过程,就可以保证左指针 i 的左侧元素都不大于切分元素,右指针 j 的右侧元素都不小于切分元素。当两个指针相遇时,将切分元素 a[lo] 和 a[j] 交换位置。

@@ -721,11 +721,12 @@ public class Quick3Way { ### 1. 堆 -定义:一颗二叉树的每个节点都大于等于它的两个子节点。 +堆的某个节点的值总是大于等于子节点的值,并且堆是一颗完全二叉树。 + 堆可以用数组来表示,因为堆是一种完全二叉树,而完全二叉树很容易就存储在数组中。位置 k 的节点的父节点位置为 k/2,而它的两个子节点的位置分别为 2k 和 2k+1。这里我们不使用数组索引为 0 的位置,是为了更清晰地理解节点的关系。 -

+

```java public class MaxPQ { @@ -760,7 +761,7 @@ public class MaxPQ { 在堆中,当一个节点比父节点大,那么需要交换这个两个节点。交换后还可能比它新的父节点大,因此需要不断地进行比较和交换操作。把这种操作称为上浮。 -

+

```java private void swim(int k) { @@ -773,7 +774,7 @@ private void swim(int k) { 类似地,当一个节点比子节点来得小,也需要不断的向下比较和交换操作,把这种操作称为下沉。一个节点有两个子节点,应当与两个子节点中最大那么节点进行交换。 -

+

```java private void sink(int k) { @@ -816,11 +817,19 @@ public Key delMax() { 由于堆可以很容易得到最大的元素并删除它,不断地进行这种操作可以得到一个递减序列。如果把最大元素和当前堆中数组的最后一个元素交换位置,并且不删除它,那么就可以得到一个从尾到头的递减序列,从正向来看就是一个递增序列。因此很容易使用堆来进行排序,并且堆排序是原地排序,不占用额外空间。 -堆排序要分两个阶段,第一个阶段是把无序数组建立一个堆;第二个阶段是交换最大元素和当前堆的数组最后一个元素,并且进行下沉操作维持堆的有序状态。 +**构建堆** 无序数组建立堆最直接的方法是从左到右遍历数组,然后进行上浮操作。一个更高效的方法是从右至左进行下沉操作,如果一个节点的两个节点都已经是堆有序,那么进行下沉操作可以使得这个节点为根节点的堆有序。叶子节点不需要进行下沉操作,因此可以忽略叶子节点的元素,因此只需要遍历一半的元素即可。 -

+

+ +**交换堆顶元素与最后一个元素** + +交换之后需要进行下沉操作维持堆的有序状态。 + +

+ +

```java public static void sort(Comparable[] a){ diff --git a/pics/33ac2b23-cb85-4e99-bc41-b7b7199fad1c.png b/pics/33ac2b23-cb85-4e99-bc41-b7b7199fad1c.png new file mode 100644 index 00000000..6e8383f3 Binary files /dev/null and b/pics/33ac2b23-cb85-4e99-bc41-b7b7199fad1c.png differ diff --git a/pics/5d4a5181-65fb-4bf2-a9c6-899cab534b44.png b/pics/5d4a5181-65fb-4bf2-a9c6-899cab534b44.png new file mode 100644 index 00000000..110bea35 Binary files /dev/null and b/pics/5d4a5181-65fb-4bf2-a9c6-899cab534b44.png differ diff --git a/pics/72f0ff69-138d-4e54-b7ac-ebe025d978dc.png b/pics/72f0ff69-138d-4e54-b7ac-ebe025d978dc.png new file mode 100644 index 00000000..5299728f Binary files /dev/null and b/pics/72f0ff69-138d-4e54-b7ac-ebe025d978dc.png differ diff --git a/pics/7a80661f-115e-48e0-8a79-837ef7d436c8.png b/pics/7a80661f-115e-48e0-8a79-837ef7d436c8.png new file mode 100644 index 00000000..14890ac5 Binary files /dev/null and b/pics/7a80661f-115e-48e0-8a79-837ef7d436c8.png differ diff --git a/pics/8f0cc500-5994-4c7a-91a9-62885d658662.png b/pics/8f0cc500-5994-4c7a-91a9-62885d658662.png new file mode 100644 index 00000000..034205a8 Binary files /dev/null and b/pics/8f0cc500-5994-4c7a-91a9-62885d658662.png differ diff --git a/pics/a01243f1-f5d7-4bee-b16e-1f921d2f58e8.png b/pics/a01243f1-f5d7-4bee-b16e-1f921d2f58e8.png new file mode 100644 index 00000000..81e75ba5 Binary files /dev/null and b/pics/a01243f1-f5d7-4bee-b16e-1f921d2f58e8.png differ diff --git a/pics/b84ba6fb-312b-4e69-8c77-fb6eb6fb38d4.png b/pics/b84ba6fb-312b-4e69-8c77-fb6eb6fb38d4.png new file mode 100644 index 00000000..dc44da3d Binary files /dev/null and b/pics/b84ba6fb-312b-4e69-8c77-fb6eb6fb38d4.png differ diff --git a/pics/f3080f83-6239-459b-8e9c-03b6641f7815.png b/pics/f3080f83-6239-459b-8e9c-03b6641f7815.png new file mode 100644 index 00000000..77868686 Binary files /dev/null and b/pics/f3080f83-6239-459b-8e9c-03b6641f7815.png differ