1.符号
O ≤ Ω ≥ θ = o <
2.最大子序列和(4种算法)+折半查找【判断一个已排序好的集合中是否存在该元素】+欧几里算法【gcd(50,15)求两数的最大公倍数】+幂运算
3.抽象数据类型(ADT)
添加,删除、包含等操作。
Ai-1是Ai的前驱,Ai是Ai-1的后继。
(1) 链表
next链,最后一个单元的next链引用null
③ ArrayList接口中的搜索、删除操作开销较大。
(3)栈【先进后出表】
表的末端为top
对空栈进行pop(出栈)或者top被认为是栈ADT中的一个错误。当运行push(进栈)时,空间用尽是一个实现限制,但不是ADT错误。
后缀记法
6 5 2 3 + 8 * + 3 + *
意义是:3+2再*8,再+5,再+3,再*6
(4)队列(queque)
二 树(文件系统等)
对于大量的输入数据,链表的线性访问时间太慢,不宜使用。
一棵树是一些节点的集合。无儿子的节点称为树叶。具有相同父亲的节点成为兄弟,祖父、孙子的概念也由此可以推导出来。
路径的长是指路径上边的条数。根的深度为0,ni的高是从ni到一片树叶的最长路径的长。
具有n个节点的需要n+1个null链。
(1)表达式树
树叶是操作数,节点是操作符。
中序遍历(先左子树,再根处运算符,再右子树)、后序遍历(先左子树、右子树,再操作符)、先序遍历(不常用)。
(2)二叉查找树(特殊的二叉树,根的左子树小于节点,右子树大于节点)
remove方法中,懒惰删除意为:但一个元素要被删除时,它仍留在树中,而只是被标记删除。
(3)AVL树(带有平衡条件的二叉查找树)
(4)伸展树
(5)散列(hash table)
hash table无法进行排序相关的操作。
三 优先队列(堆)
二叉堆:具有结构性+堆序性
完全二叉树:堆是完全被填满的二叉树。
父亲中的关键字≤儿子中的关键字才是二叉堆。
附加:数据结构基础