算法学习
「已注销」
这个作者很懒,什么都没留下…
展开
-
七大查找算法(附C语言代码实现)
平均查找长度ASL(Average Search Length)定义为: n是查找表中记录的个数。pi是查找第i个记录的概率,一般地,认为每个记录的查找概率相等,即pi=1/n(1≤i...原创 2019-05-04 11:09:03 · 792 阅读 · 0 评论 -
使用字符串编程的模板
在刷题的过程中总结了一些规律,然后再抽象出模板,方便以后面试用。对函数参数判断一个函数的参数判断是应该最先考虑的,一般判断下面的条件。if (chars == NULL) return 0;if (chars[0] == '\0') return -1;字符串双指针的模板很多时候我们会用双指针从两边遍历字符串,下面就是简单的模板bool is...原创 2019-07-16 08:55:27 · 577 阅读 · 0 评论 -
二分查找法模板
历史上,二分查找算法虽然思想简单,但引起了人们的足够重视和关注。1、算法和程序设计技术的先驱 Donald Ervin Knuth(中文名:高德纳):Although the basic idea of binary search is comparatively straightforward, the details can be surprisingly tricky ......原创 2019-07-14 09:54:37 · 300 阅读 · 0 评论 -
单调栈
给定两个没有重复元素的数组nums1 和nums2,其中nums1是nums2的子集。找到nums1中每个元素在nums2中的下一个比其大的值。nums1中数字x的下一个更大元素是指x在nums2中对应位置的右边的第一个比x大的元素。如果不存在,对应位置输出-1。示例 1:输入: nums1 = [4,1,2], nums2 = [1,3,4,2]...原创 2019-06-16 09:03:09 · 219 阅读 · 0 评论 -
算法学习(4):分治法
分治法的基本思想将规模为N的问题分解为k个规模较小的子问题,使这些子问题相互独立可分别求解,再将k个子问题的解合并成原问题的解.如子问题的规模仍很大,则反复分解直到问题小到可直接求解为止。 什么情况适合分治法?该问题的规模缩小到一定的程度就可以容易地解决; 该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质; 利用该...原创 2019-06-07 16:04:47 · 405 阅读 · 0 评论 -
算法学习(5):动态规划算法
背包问题假设你是个小偷,背着一个可装4磅东西的背包。你可盗窃的商品有如下3件。为了让盗窃的商品价值最高,你该选择哪些商品?简单算法最简单的算法如下:尝试各种可能的商品组合,并找出价值最高的组合。这样可行,但速度非常慢。在有3件商品的情况下,你需要计算8个不同的集合;有4件商品时,你需要计算16个集合。每增加一件商品,需要计算的集合数都将翻倍!这种算法的运行时间为...原创 2019-05-29 17:01:42 · 664 阅读 · 0 评论 -
算法学习(3):分枝界限法
类似于回溯法,都是在解空间中搜索问题解的算法。寻找什么解:回溯法:求解目标是找到满足约束条件的所有解。 分枝界限法:求解目标是找到满足约束条件的最优解寻找解的方式:回溯法:以深度优先的方式搜索解空间。 分枝界限法:以广度优先的方式搜索解空间。分枝界限法搜索方式:队列式搜索方式:存储结点的数据结构式队列,即采用先进先出的方式。 优先级队列方式:按照目标函数值越大(或者越小)...原创 2019-06-01 16:55:19 · 798 阅读 · 0 评论 -
算法学习(2):回溯法
回溯法一般解题步骤:针对所给问题的解空间,首先应明确定义问题的解空间,问题的解空间应至少包含问题的一个最优解。 确定结点的扩展搜索规则。 以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。结点扩展:类似暴力法的深度优先搜索的扩展方式。剪枝:用约束函数剪不满足约束条件的子树,用界限函数剪除不能得到最优解的子树。回溯法的非递归框架int x[n],i; ...原创 2019-06-01 16:27:29 · 357 阅读 · 0 评论 -
算法学习(1):暴力算法
适合两种情况:可预先确定每个状态的元素个数N; 状态元素的可能值为一个连续的值域;暴力算法的改进:减少搜索状态的总数; 利用有效信息减少重复计算; 将原问题转化为更小的问题; 根据问题的性质进行裁剪; 引进其他算法策略;求一个字符串的元素的所有组合如“1,2”为:{},{1},{2},{1,2}每个元素有取和不取两种方式,...原创 2019-05-31 15:39:25 · 3586 阅读 · 0 评论 -
算法学习(6):贪心算法
教室调度问题假设有如下课程表,你希望将尽可能多的课程安排在某间教室上。 你希望在这间教室上尽可能多的课。如何选出尽可能多且时间不冲突的课程呢?这个问题好像很难,不是吗?实际上,算法可能简单得让你大吃一惊。具体做法如下。(1) 选出结束最早的课,它就是要在这间教室上的第一堂课。(2) 接下来,必须选择第一堂课结束后才开始的课。同样,...原创 2019-05-26 20:26:30 · 926 阅读 · 1 评论 -
B树,B-树,B+和红黑树的区别
B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树; 如:B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,如果查询关键字比结点关键字...原创 2019-05-04 11:07:40 · 2156 阅读 · 0 评论 -
字符串暴力算法和KMP
暴力int index(SqString s,SqString t){ int i=0, j=0; while (i<s.length && j<t.length) { if (s.data[i]==t.data[j]){ //继续匹配下一个字符 i++; //主串和子串依次匹配下一个字符 ...原创 2019-07-31 09:37:50 · 199 阅读 · 0 评论