10000 Merge branch 'master' of github.com:ssjssh/javaalgorithm · 15210831009/javaalgorithm@6c17a06 · GitHub
[go: up one dir, main page]

Skip to content

Commit 6c17a06

Browse files
author
shengshijun
committed
Merge branch 'master' of github.com:ssjssh/javaalgorithm
2 parents 1c1f4d0 + 42f4e87 commit 6c17a06

File tree

1 file changed

+27
-25
lines changed

1 file changed

+27
-25
lines changed

README.md

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,80 +4,82 @@ javaalgorithm
44
模仿Java标准库的一些API实现的算法库,包括了数据结构,字符串处理(StringBuilder),图(有向图)。原来是用Python实现的,但是Python实现的并没有经过完整的测试,不能够保证完全的正确性。
55
使用Java实现的集合库都经过完整的测试,实际上,我在实现的过程中基本上用的都是自己实现的数据结构。另外的一些算法和工具来自《程序员面试金典》和《剑指offer》中的习题。
66

7+
注意:项目需要使用java 8编译,因为用到了lambda和stream类库。
8+
79
在实现的过程中也发现了Java集合类库中的一些问题。
810
=========
911

10-
1 并没有实现函数式编程语言中三个经典的操作符,map,filter,reduce
12+
1. 并没有实现函数式编程语言中三个经典的操作符,map,filter,reduce
1113

12-
2 toArray方法返回的是Object[]类型,原因是Java不能够通过泛型创建数组,我是通过toVector来实现这个需求的
14+
2. toArray方法返回的是Object[]类型,原因是Java不能够通过泛型创建数组,我是通过toVector来实现这个需求的
1315

14-
3 JDK集合类库中所有的迭代器next方法实际上会向下移动一位,而我的集合迭代器中则是在hasNext的时候向下移动一位。
16+
3. JDK集合类库中所有的迭代器next方法实际上会向下移动一位,而我的集合迭代器中则是在hasNext的时候向下移动一位。
1517

1618
#数据结构
1719

1820
##链表
1921

20-
###Vector: 可变数组实现,名字参考C++中同名的类,和集合类库中的ArrayList类似。
22+
1. Vector: 可变数组实现,名字参考C++中同名的类,和集合类库中的ArrayList类似。
2123

22-
###LinkedList: 类似于Java中的LinkedList,双向链表实现,同时也实现了Queue接口,因此可以被用作队列。
24+
2. LinkedList: 类似于Java中的LinkedList,双向链表实现,同时也实现了Queue接口,因此可以被用作队列。
2325

2426
##栈 (栈并没有继承任何类或者接口(也是Java集合框架中的一个问题))
2527

26-
###LinkedStack:使用双向链表实现的一个栈,对于标准的push,pop和head都是O(1)
28+
1. LinkedStack:使用双向链表实现的一个栈,对于标准的push,pop和head都是O(1)
2729

28-
###ExtensiveStack:同时记录了栈中的最大值和最小值,来自于金典
30+
2. ExtensiveStack:同时记录了栈中的最大值和最小值,来自于金典
2931

30-
###MultiStack:表示多个栈的栈,也就是说这个数据结构中可以有任意多的栈,来自金典
32+
3. MultiStack:表示多个栈的栈,也就是说这个数据结构中可以有任意多的栈,来自金典
3133

3234
##队列(暂时不会实现阻塞队列)
3335

34-
###PriorityQueue:使用最大堆实现的优先队列
36+
1. PriorityQueue:使用最大堆实现的优先队列
3537

3638
##字典
3739

38-
###HashMap:使用链接法解决冲突的Map。
40+
1. HashMap:使用链接法解决冲突的Map。
3941

40-
###TreeMap:在插入键的时候会保持键的比较顺序,在遍历的时候会按照比较顺序来。
42+
2. TreeMap:在插入键的时候会保持键的比较顺序,在遍历的时候会按照比较顺序来。
4143

42-
###LinkedHashMap:类似于HashMap,但是保持了插入顺序。
44+
3. LinkedHashMap:类似于HashMap,但是保持了插入顺序。
4345

4446
##集合
4547

46-
###Hash 10000 Set:使用HashMap实现的集合
48+
1. HashSet:使用HashMap实现的集合
4749

48-
###TreeSet:使用红黑树实现的集合
50+
2. TreeSet:使用红黑树实现的集合
4951

5052
##平衡树
5153

52-
###AVL树
54+
1. AVL树
5355

54-
###红黑树
56+
2. 红黑树
5557

56-
###B树
58+
3. B树
5759

58-
###B+树
60+
4. B+树
5961

60-
##前缀树,也叫单词查找树(Trie),通过在每一个节点上使用HashMap来存储子节点,使得Tries可以支持UTF-8
62+
5. 前缀树,也叫单词查找树(Trie),通过在每一个节点上使用HashMap来存储子节点,使得Tries可以支持UTF-8
6163

6264
##图
6365

6466
##其他
6567

66-
###跳跃表(SkipList)
68+
1. 跳跃表(SkipList)
6769

68-
###BitSet
70+
2. BitSet
6971

70-
###StringBuilder
72+
3. StringBuilder
7173

7274
#算法
7375

7476
##排序算法
7577

76-
###快速排序,也是默认的排序方法
78+
1. 快速排序,也是默认的排序方法
7779

78-
###计数排序
80+
2. 计数排序
7981

80-
###基数排序
82+
3. 基数排序
8183

8284

8385

0 commit comments

Comments
 (0)
0