04 2018 档案

摘要:一、基本操作: 1、Find:当且仅当两个元素属于相同的集合时,返回相同的名字 2、Union:将两个不相交的集合合并为一个不想交的集合。 应用:在等价关系中,判断两个元素之间是否有关系或者添加等价关系。 二、基本数据结构 1、Quick-Find实现 采用一个数组保存每个等价类的名字,这种实现下F 阅读全文
posted @ 2018-04-24 22:07 赵永驰 阅读(516) 评论(0) 推荐(0)
摘要:题目:找出数组中的所有三元组a,b,c使得a+b+c = 0,所有的三元组不能重复 提供一个复杂度O(n2)的代码,复杂度为O(n3)会超时。 阅读全文
posted @ 2018-04-16 20:56 赵永驰 阅读(332) 评论(0) 推荐(0)
摘要:希尔排序代码如下: 堆排序: 归并排序实现代码如下: 阅读全文
posted @ 2018-04-15 11:20 赵永驰 阅读(480) 评论(0) 推荐(0)
摘要:定义: 零路径长Npl(x):定义为从X到一个没有两个儿子的节点的最短路径长。 Npl(X) = min{ Npl(lchild), Npl(rchild) } + 1 (定义Npl(NULL) = -1,那么这个公式满足只有一个子节点的节点) 左式堆的性质:1、结构性质(对于堆中的任一节点,左儿子 阅读全文
posted @ 2018-04-15 09:45 赵永驰 阅读(186) 评论(0) 推荐(0)
摘要:二叉堆的两个重要性质: 1、结构性,为完全二叉树,可以用数组方便地表示。2、堆序性:树中每个节点的关键字值大于或等于其父节点的关键字值。 二叉堆的数据结构声明如下: 初始化函数代码如下: Insert函数实现代码如下: DeleteMin函数实现代码如下: 阅读全文
posted @ 2018-04-13 20:48 赵永驰 阅读(747) 评论(0) 推荐(0)
摘要:数据结构定义如下: 初始化函数代码如下: Find函数实现代码如下: Insert函数代码实现如下: Rehash函数代码实现如下: 阅读全文
posted @ 2018-04-13 15:04 赵永驰 阅读(193) 评论(0) 推荐(0)
摘要:分离链表法解决冲突的散列表ADT实现 数据结构定义如下: 初始化散列表实现代码如下: Find的实现代码如下: Insert的实现代码如下: Delete的实现代码如下: 阅读全文
posted @ 2018-04-13 09:10 赵永驰 阅读(158) 评论(0) 推荐(0)
摘要:定义:每个节点的左右子树的高度最多差1的二叉查找树。(空树的高度为-1)。 AVL树保证树的高度只比log(N)多一点,因此除了插入删除外,可以保证所有的树操作都以O(logN)执行。 当插入一个节点的时候,只有那些从插入点到根节点路径上的点的平衡性可能被破坏,在最深的不满足平衡性的节点进行平衡操作 阅读全文
posted @ 2018-04-12 20:37 赵永驰 阅读(157) 评论(0) 推荐(0)
摘要:首先给出此ADT的声明: 1、MakeEmpty的实现 2、Find的实现 3、FindMax和FindMin的实现(一个递归 一个非递归) 4、Insert的实现 5、Delete的实现 阅读全文
posted @ 2018-04-12 13:59 赵永驰 阅读(322) 评论(0) 推荐(0)