阿里实习笔试速度复习(二) ---其实考到的不多

来源:互联网 发布:西安软件行业 编辑:程序博客网 时间:2024/04/30 08:43

算法基础:

(1)      时间频度

(2)      时间复杂度

(3)      空间复杂度

 

顺序结构(数组)

优点: 随机存取

缺点: 插入,删除需要大量移动元素 ,前端和中间插入和删除影响很大

 

表:优点:易扩展,追加,追减快,交换快, 插入和删除不需要移动,空间有效利用

缺点:随机存取速度慢

 

vector- 会自动增长的数组

随机存取前端和中间插入和删除影响很大

list- 擅长插入删除的双向链表

deque- 拥有vector和list两者优点的双端队列

可以随机访问,但是中间插入和删除很慢

 

栈  限制在表的一端进行插入和删除运算的线性表LIFO表

优点操作限制,机制明确.

缺点操作受限制,随机存取困难

队列   先进先出(FIFO)的线性表

优点操作限制,机制明确.

缺点操作受限制,随机存取困难

循环队列

 

前序遍历,中序遍历,后序遍历

二叉树—至多2个儿子

二叉查找树--  左>中>右

makeEmpty operator=  O(logN)   其他 O(d)   平均O(logN)

 随机insertremove后会很不平衡

AVL树

插入    外边单旋  里面双旋转

1 左儿子左子树              单旋   

2 左儿子右子树              双旋


 

3 右儿子左子树              双旋

4 右儿子左子树              单旋

伸展树  - - 保证从空树开始的任意连续操作最多话费O(MlogN)

B树---适合于存储

红黑树---一种自平衡二叉查找树  它可以在O(log n)时间内做查找,插入和删除,这里的n是树中元素的数目。

性质1. 节点是红色或黑色。

性质2. 根节点是黑色。

性质3 每个叶节点(NIL节点,空节点)是黑色的。

性质4 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)

性质5. 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。

对红黑树进行插入操作时,总是插入红色的结点.

情况1:插入的是根结点。----对策:直接把此结点涂为黑色。

情况2:插入的结点的父结点是黑色。----对策:什么也不做。

情况3:当前结点的父结点是红色且祖父结点的另一个子结点(叔叔结点)是红色。

对策:将当前节点的父节点和叔叔节点涂黑,祖父结点涂红,把当前结点指向祖父节点,从新的当前节点重新开始算法。

情况4:当前节点的父节点是红色,叔叔节点是黑色,当前节点是其父节点的右子

对策:当前节点的父节点做为新的当前节点,以新当前节点为支点左旋。

 

情况5:当前节点的父节点是红色,叔叔节点是黑色,当前节点是其父节点的左子

解法:父节点变为黑色,祖父节点变为红色,在祖父节点为支点右旋

 

散列

把数据通过散列函数映射到固定大小的数组

探测

H0(x), H1(x)…

线性探测 f(i)  = i

平方探测f(i)  = i*i

双散列  hash1(x) +  i* hash2(x)

再散列新建2倍大小表再散列

 

优先队列(堆)

二叉堆

0 0
原创粉丝点击