Skip to content

Commit 681d7ee

Browse files
authoredMar 27, 2017
Update README.markdown
1 parent 85deb6d commit 681d7ee

File tree

1 file changed

+52
-52
lines changed

1 file changed

+52
-52
lines changed
 

‎README.markdown

+52-52
Original file line numberDiff line numberDiff line change
@@ -16,77 +16,77 @@
1616

1717
## 重要链接
1818

19-
[什么是算法和数据结构?](What are Algorithms.markdown)-薄饼!
19+
[什么是算法和数据结构?](What%20are%20Algorithms.markdown)-薄饼!
2020

21-
[为什么要学习算法?](Why Algorithms.markdown)-还在担心这不是你的菜吗?请读一下这篇文章。
21+
[为什么要学习算法?](Why%20Algorithms.markdown)-还在担心这不是你的菜吗?请读一下这篇文章。
2222

23-
[大 O 表示法](Big-O Notation.markdown)-我们经常会听到这样的话:“这个算法是 O(n) 的”。如果你不知道这是啥意思,请读读这篇文章。
23+
[大 O 表示法](Big-O%20Notation.markdown)-我们经常会听到这样的话:“这个算法是 O(n) 的”。如果你不知道这是啥意思,请读读这篇文章。
2424

25-
[*算法设计技巧](Algorithm Design.markdown)-怎样设计自己的算法?
25+
[*算法设计技巧](Algorithm%20Design.markdown)-怎样设计自己的算法?
2626

27-
[欢迎参与翻译!](How to Contribute.markdown)-如果有意参与翻译,请阅读注意事项!
27+
[欢迎参与翻译!](How%20to%20Contribute.markdown)-如果有意参与翻译,请阅读注意事项!
2828

2929
## 从哪开始?
3030

3131
如果你之前没有接触过算法和数据结构,你可以从下面这些简单易懂的算法开始看起:
3232

3333
- [](Stack/)
3434
- [队列](Queue/)
35-
- [*插入排序](Insertion Sort/)
36-
- [*二分搜索](Binary Search/)和[*二分搜索树](Binary Search Tree/)
37-
- [*归并排序](Merge Sort/)
35+
- [*插入排序](Insertion%20Sort/)
36+
- [*二分搜索](Binary%20Search/)[*二分搜索树](Binary%20Search%20Tree/)
37+
- [*归并排序](Merge%20Sort/)
3838
- [*Boyer-Moore 字符串搜索算法](Boyer-Moore/)
3939

4040
## 算法列表
4141

4242
### 搜索算法
4343

44-
- [*线性搜索](Linear Search/)-从数组中查找某个元素。
45-
- [*二分搜索](Binary Search/)-从已排序的数组中快速查找元素。
46-
- [*统计出现次数](Count Occurrences/)-统计某个值在数组中的出现次数。
47-
- [*查找最大/最小值](Select Minimum Maximum)-找到数组中的最大/最小值。
48-
- [*第 K 大元素](Kth Largest Element/)-找到数组中的第 **K** 大元素,例如中位数。
49-
- [*选取样本](Selection Sampling/)-随机地从集合中选取一些元素作为样本。
44+
- [*线性搜索](Linear%20Search/)-从数组中查找某个元素。
45+
- [*二分搜索](Binary%20Search/)-从已排序的数组中快速查找元素。
46+
- [*统计出现次数](Count%20Occurrences/)-统计某个值在数组中的出现次数。
47+
- [*查找最大/最小值](Select%20Minimum%20Maximum)-找到数组中的最大/最小值。
48+
- [*第 K 大元素](Kth%20Largest%20Element/)-找到数组中的第 **K** 大元素,例如中位数。
49+
- [*选取样本](Selection%20Sampling/)-随机地从集合中选取一些元素作为样本。
5050
- [*并查集](Union-Find/)-保持一些不相交的集合,帮助你快速合并它们。
5151

5252
### 字符串搜索算法
5353

54-
- [*Brute-Force 算法](Brute-Force String Search/)-一个简单粗暴的方法。
54+
- [*Brute-Force 算法](Brute-Force%20String%20Search/)-一个简单粗暴的方法。
5555
- [*Boyer-Moore 算法](Boyer-Moore/)-一种高效的字符串子串搜索算法。它不需要对被搜索的字符串中的字符进行逐一比较,而是根据一个查找表跳过其中的某些部分。
5656
- Rabin-Karp 算法
57-
- [*最长公共子序列算法](Longest Common Subsequence/)-找到两个字符串中的最长公共子序列。
57+
- [*最长公共子序列算法](Longest%20Common%20Subsequence/)-找到两个字符串中的最长公共子序列。
5858

5959
### 排序算法
6060

6161
探究排序算法的工作原理是非常有趣的,但在实际的编码中,你几乎永远也不会需要自己编写排序算法,Swift 自带的 `sort()` 函数已经非常够用了,但如果你还是好奇背后的原理,请继续阅读。
6262

6363
基本的排序算法:
6464

65-
- [*插入排序](Insertion Sort/)
66-
- [*选择排序](Selection Sort/)
67-
- [*希尔排序](Shell Sort/)
65+
- [*插入排序](Insertion%20Sort/)
66+
- [*选择排序](Selection%20Sort/)
67+
- [*希尔排序](Shell%20Sort/)
6868

6969
快速的排序算法:
7070

7171
- [*快速排序](Quicksort/)
72-
- [*归并排序](Merge Sort/)
73-
- [*堆排序](Heap Sort/)
72+
- [*归并排序](Merge%20Sort/)
73+
- [*堆排序](Heap%20Sort/)
7474

7575
特殊的排序算法
7676

77-
- [*桶排序](Bucket Sort/) :construction:
78-
- [*计数排序](Counting Sort/)
77+
- [*桶排序](Bucket%20Sort/) :construction:
78+
- [*计数排序](Counting%20Sort/)
7979
- 基数排序
80-
- [*拓扑排序](Topological Sort/)
80+
- [*拓扑排序](Topological%20Sort/)
8181

8282
不好的排序算法(知道就行了,不要用!):
8383

84-
- [*冒泡排序](Bubble Sort/)
84+
- [*冒泡排序](Bubble%20Sort/)
8585

8686
### 压缩算法
8787

88-
- [*变动长度编码法(RLE)](Run-Length Encoding/)。将重复的值存储为一个单字节及其计数。
89-
- [*哈夫曼编码](Huffman Coding/)。将常见的元素使用更小的单位存储。
88+
- [*变动长度编码法(RLE)](Run-Length%20Encoding/)。将重复的值存储为一个单字节及其计数。
89+
- [*哈夫曼编码](Huffman%20Coding/)。将常见的元素使用更小的单位存储。
9090

9191
### 杂项
9292

@@ -96,7 +96,7 @@
9696

9797
- [*最大公约数算法(GCD)](GCD/)-特殊福利:最小公倍数算法。
9898
- [*排列组合算法](Combinatorics/)-还记得高中学过俄组合数学吗?
99-
- [*调度场算法](Shunting Yard/)-用于将中缀表达式转换为后缀表达式的经典算法。
99+
- [*调度场算法](Shunting%20Yard/)-用于将中缀表达式转换为后缀表达式的经典算法。
100100
- 统计算法
101101

102102
### 机器学习
@@ -121,69 +121,69 @@
121121
### 数组变体
122122

123123
- [*二维数组](Array2D/)-固定尺寸的二维数组,可用于棋盘游戏。
124-
- [*比特集](Bit Set/)-**n** 位大小固定尺度的序列。
125-
- [*固定长度数组](Fixed Size Array/)-如果你确切的知道数据的大小,使用老式的固定长度的数组会更加高效。
126-
- [*有序数组](Ordered Array/)-一个永远有序的数组。
124+
- [*比特集](Bit%20Set/)**n** 位大小固定尺度的序列。
125+
- [*固定长度数组](Fixed%20Size%20Array/)-如果你确切的知道数据的大小,使用老式的固定长度的数组会更加高效。
126+
- [*有序数组](Ordered%20Array/)-一个永远有序的数组。
127127

128128
### 队列
129129

130130
- [](Stack/)-后进先出!
131131
- [队列](Queue/)-先进先出!
132132
- [*双端队列](Deque/)
133-
- [*优先队列](Priority Queue)-一个保持最重要的元素总是在最前面的队列。
134-
- [*有限优先队列](Bounded Priority Queue)-元素最大数受限制的优先队列。 :construction:
135-
- [*环形缓冲区](Ring Buffer/)-一个语义上的固定大小的环形缓冲区,实际使用的是一维序列头尾相接实现。
133+
- [*优先队列](Priority%20Queue)-一个保持最重要的元素总是在最前面的队列。
134+
- [*有限优先队列](Bounded%20Priority%20Queue)-元素最大数受限制的优先队列。 :construction:
135+
- [*环形缓冲区](Ring%20Buffer/)-一个语义上的固定大小的环形缓冲区,实际使用的是一维序列头尾相接实现。
136136

137137
### 列表
138138

139-
- [*链表](Linked List/)-链接起来的数据序列。包含单向和双向链表。
139+
- [*链表](Linked%20List/)-链接起来的数据序列。包含单向和双向链表。
140140
- 跳跃列表
141141

142142
###
143143

144144
- [*](Tree/)-通用目的的树形结构。
145-
- [*二叉树](Binary Tree/)-一种节点最多有两个孩子节点的树形结构。
146-
- [*二叉搜索树(BST)](Binary Search Tree/)-以某种方式组织自己的节点的二叉树,以求较快的查询速度。
147-
- [*AVL 树](AVL Tree/)-一种通过旋转来维持平衡的二叉搜索树。 :construction:
145+
- [*二叉树](Binary%20Tree/)-一种节点最多有两个孩子节点的树形结构。
146+
- [*二叉搜索树(BST)](Binary%20Search%20Tree/)-以某种方式组织自己的节点的二叉树,以求较快的查询速度。
147+
- [*AVL 树](AVL%20Tree/)-一种通过旋转来维持平衡的二叉搜索树。 :construction:
148148
- 红黑树
149149
- 伸展树
150150
- 线索二叉树
151-
- [*线段树](Segment Tree/)-能够快速地对某区间进行计算。
151+
- [*线段树](Segment%20Tree/)-能够快速地对某区间进行计算。
152152
- k-d 树
153153
- [*](Heap/)-存储在一维数组中的二叉树,所以它不需要使用指针。很适合做为优先队列使用。
154154
- 斐波那契堆
155155
- 字典树(Trie)
156156
- B 树
157-
- [*基数树](Radix Tree/) :construction:
157+
- [*基数树](Radix%20Tree/) :construction:
158158

159159
### 哈希
160160

161-
- [*哈希表](Hash Table/)-允许你通过一个关键词来存取数据。字典通常都是基于哈希表实现的。
161+
- [*哈希表](Hash%20Table/)-允许你通过一个关键词来存取数据。字典通常都是基于哈希表实现的。
162162
- 哈希函数
163163

164164
### 集合
165165

166-
- [*布隆过滤器](Bloom Filter/)-一个常量内存数据结构,用于概率性的检测某个元素是否在集合中。
167-
- [*哈希集合](Hash Set/)-使用哈希表实现的集合。
166+
- [*布隆过滤器](Bloom%20Filter/)-一个常量内存数据结构,用于概率性的检测某个元素是否在集合中。
167+
- [*哈希集合](Hash%20Set/)-使用哈希表实现的集合。
168168
- 多重集
169-
- [*有序集](Ordered Set/)-很看重元素顺序的集合。
169+
- [*有序集](Ordered%20Set/)-很看重元素顺序的集合。
170170

171171
###
172172

173173
- [*](Graph/)
174-
- [*广度优先搜索(BFS)](Breadth-First Search/)
175-
- [*深度优先搜索(DFS)](Depth-First Search/)
176-
- [*最短路径算法](Shortest Path %28Unweighted%29/)-作用对象为无权值树。
177-
- [*最小生成树](Minimum Spanning Tree %28Unweighted%29/)-作用对象为无权值树。
178-
- [*任意两点间的最短路径算法](All-Pairs Shortest Paths/)
174+
- [*广度优先搜索(BFS)](Breadth-First%20Search/)
175+
- [*深度优先搜索(DFS)](Depth-First%20Search/)
176+
- [*最短路径算法](Shortest%20Path%20%28Unweighted%29/)-作用对象为无权值树。
177+
- [*最小生成树](Minimum%20Spanning%20Tree%20%28Unweighted%29/)-作用对象为无权值树。
178+
- [*任意两点间的最短路径算法](All-Pairs%20Shortest%20Paths/)
179179

180180
## 智力题
181181

182182
很多程序员在面试时都会被问到一些算法性质的智力题。这里只囊括了一点比较有趣的。想了解更多的智力题(及答案),请浏览[这里](http://elementsofprogramminginterviews.com/),还有[这里](http://www.crackingthecodinginterview.com)
183183

184-
- [*二和问题](Two-Sum Problem/)
185-
- [*Fizz Buzz](Fizz Buzz/)
186-
- [*蒙提霍尔问题](Monty Hall Problem/)
184+
- [*二和问题](Two-Sum%20Problem/)
185+
- [*Fizz Buzz](Fizz%20Buzz/)
186+
- [*蒙提霍尔问题](Monty%20Hall%20Problem/)
187187

188188
## 学无止境!
189189

0 commit comments

Comments
 (0)
Please sign in to comment.