Algorithms and Data Structures
zhaoyaozong
这个作者很懒,什么都没留下…
展开
-
SkipList(跳表)
跳表简介跳表是基于有序链表实现的搜索结构,是一种动态的搜索结构,即支持动态插入和删除操作,且跳表查找和删除的平均时间复杂度是Olog(n),因此跳表是一种时间复杂度最小的搜索结构。我们知道对一个数据集合的查找,最差的时间复杂度是O(n),即遍历每个元素进行查找;最好的时间复杂度是近似Olog(n),实现Olog(n)时间复杂度,主要思想是每进行一次查找查找范围都减小一半,因此时间复杂度为Olog(n)的数据集合一般为有序集合,每次查找与有序集中的中间元素比较,确定下次查找的元素集合范围。单...原创 2020-07-20 20:30:46 · 427 阅读 · 0 评论 -
散列表
散列表简介 散列表(哈希表)是普通数组概念的推广。由于对普通数组可以直接寻址,因此散列表一般情况下的时间复杂度为O(1)。1.直接寻址表关键字全域U={0,1,2,...,m-1}。直接寻址表,记为T[0,...,m-1],其中每个位置或称为槽(slot),对应全域U中的一个关键字。槽k指向集合中一个关键字为k的关键字。2.散列表直接寻址法的缺点是当U很大时,需要的直接寻址表很大,没有足够的内存实现。在散列方式下,关键字k放在槽h(k)中,既利用散列函数h,由关键字k计算出槽的位置。..原创 2020-05-17 23:40:18 · 186 阅读 · 0 评论 -
B树和B+树
B树简介B树(B-树)是为磁盘而设计的一种平衡搜索树,类似红黑树。主要目的是降低磁盘IO次数,提高磁盘读取效率。数据库是磁盘IO密集应用,因此常使用B树和B+树存储信息。B树可以有很多孩子,“分支因子”m可以很大,通常依赖于所使用的磁盘单元的特性。含有n个节点的B树高度为,由于B树“分支因子”很大,表示高度的对数的底数可以非常大。因此要比二叉搜索树高度小很多,但一般也用O(lgn)表示B树操作的时间复杂度。数据库存储信息一般非常之大,因此大部分数据库会把信息保存到磁盘等持久性存储器中数据。数据库的原创 2020-05-17 21:27:48 · 179 阅读 · 0 评论 -
对算法导论中用循环不变式证明算法正确性的理解
算法导论中原文:We use loop invariants to help us understand why an algorithm is correct. Wemust show three things about a loop invariant:Initialization: It is true prior to the first iteration of the原创 2013-10-08 23:18:06 · 2997 阅读 · 0 评论