![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
kiu000
这个作者很懒,什么都没留下…
展开
-
二叉查找树
定义: 二叉查找树是一种二叉树数据结构,其任意节点的值大于其左子树所有节点,且小于右子树所有节点。支持多种动态集合上的操作,主要有查找、最大值、最小值、前驱、后继、插入和删除,这些操作都可以在O(n )时间复杂度内完成,其中n为二叉树的高度。 操作: 查找:从根节点开始搜索,若查找值等于根节点值,则命中,若小于根节点值,则递归搜索左子树,否则递归搜索原创 2013-04-22 22:33:54 · 493 阅读 · 0 评论 -
排序与搜索算法
排序算法插入排序:基本思想是将下一输入插入到已排好的序列中。是一种在线算法,其算法复杂度为O(n2)。希尔排序:一种改进的插入排序算法,将序列按间隔距离d分组,对每组实施插入排序,逐渐减小间隔距离d来分组实施插入排序,最终d=1时,排序完成。是一种离线算法,算法复杂度为O(n2),但是相对于基本插入算法来说,会减少大量数据移动。冒泡排序:基本思想将序列从头到尾相邻逆序的两个数进行交换,原创 2013-04-23 12:16:29 · 708 阅读 · 0 评论 -
KMP算法
KMP算法由Knuth、Morris和Pratt同时提出线性时间匹配字符串的算法,其时间复杂度为O(n+m),其中n为被匹配字符串T长度,m为模式字符串P长度。 朴素字符串匹配算法时间复杂度为O((n-m+1)*m),不需要预处理时间,KMP算法利用在匹配过程中得到的信息可以避免不必要的比较,从而降低时间复杂度,但需要预处理模式字符串,其中预处理时间复杂度为O(m),匹配时间复杂度为O(原创 2013-04-18 16:07:11 · 591 阅读 · 0 评论 -
威佐夫(Wythoff)博弈
问题模型Wythoff博弈:有两堆石子,由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。问现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。 解题思路动态规划比较容易想到直接用博弈论的必败、必胜态进行动态规划:设两堆石原创 2013-04-27 16:33:23 · 1022 阅读 · 0 评论 -
最小堆(小根堆)
最小堆定义:完全二叉树,且其任意节点键值小于其左子树所有节点和右子树所有节点。堆顶总是保存堆的最小值。堆的表示:堆是完全二叉树,所以可以用数组表示堆。设数组heap[n]为堆,heap[1]表示根节点,对于除根节点外的任意节点heap[i],其父节点为heap[i/2],其左儿子为heap[i*2],右儿子为heap[i*2+1]。堆的操作:heapify(heap,i原创 2013-04-19 17:33:23 · 4970 阅读 · 0 评论 -
主定理
主定理可以解决许多由分治法得到的递推关系式的算法的时间复杂度T(n)转载 2013-05-09 17:04:22 · 656 阅读 · 0 评论