算法
chenmingteng
这个作者很懒,什么都没留下…
展开
-
分治策略
分治策略 分治策略在每层递归中主要运用到下面三个步骤: - 分解步骤将问题划分成一些子问题,子问题的形式与原问题一样,只是规模更小。 - 解决步骤递归地求解出子问题,如果子问题足够小,则停止递归,直接求解。 - 合并步骤将子问题的解合成原问题的解 1.求最大子数组问题 问题描述:即在数组中选择一个区间,使得这个区间元素的和最大(当然如果数组的元素全是正数或全是负数,那么这个问题没有任何...原创 2018-04-11 16:06:42 · 1188 阅读 · 0 评论 -
排序算法
几种常见的排序算法 一、插入排序 插入排序算法的原理类似于我们平时玩斗地主的时候需要摸牌并且在手上排序,一般来说我们会将摸到的纸牌放到左手上排序,左手上的牌全都是已经排好序的,右手摸到的牌是待插入的纸牌。 源码 #include<iostream> using namespace std; int main() { int n,i; cin &g原创 2018-04-05 10:11:35 · 145 阅读 · 0 评论 -
优先队列
优先队列 优先队列的本质依然是最大堆,只是对最大堆的操作不同 源码:(本源码仅对《算法导论》中函数伪代码进行具体实现,正确性未验证) #include<iostream> using namespace std; int heapsize = 0; int max_limitation; const int ERROR_CODE = -1; int maxium(in...原创 2018-05-13 20:28:52 · 112 阅读 · 0 评论 -
选择算法
栈的实现方法 队列的实现方法 实际上使用环形数组来实现队列的话空间的利用率会更高一点 双向链表 带有哨兵的双向链表能够消除链表的边缘情况,使代码更加简洁高效 ...原创 2018-05-25 17:39:07 · 588 阅读 · 0 评论 -
散列表
在散列方式下,具有关键字k的元素被存放在槽h(k)中,h为散列函数(hash function) 散列表的大小比元素总数要小得多。 下面讨论解决散列表元素冲突的方法: 链接法 链接法原理图 代码实现 (此代码不可直接运行) 代码和原理图稍有不同:T和Node之间是双向链接 #include&lt;iostream&gt; using namespace std; struct...原创 2018-07-18 17:08:09 · 131 阅读 · 0 评论 -
KMP算法
#KMP算法实战 ##相关注意事项:这里求的next数组和王道上的不太一样,此处的next数组其实是prefix_table,prefix_table[i]+1=next[i] ##代码 #include&lt;iostream&gt; #include&lt;string&gt; using namespace std; int* get_next(string patten, int *nex...原创 2018-10-24 16:08:53 · 162 阅读 · 0 评论