数据结构和算法
文章平均质量分 87
雨落鸳鸯瓦
这个作者很懒,什么都没留下…
展开
-
常见算法总结
常见算法总结1.贪心算法将一个大问题分成若干个子问题,求子问题最优解,然后把子问题的解合并成原来问题的解。例题:小明手中有 1,5,10,50,100 五种面额的纸币,每种纸币对应张数分别为 5,2,2,3,5 张。若小明需要支付 456 元,则需要多少张纸币?const int N = 5; int Count[N] = {5,2,2,3,5};//每一张纸币的数量 int Value[N] = {1,5,10,50,100};int solve(int money) { int原创 2020-11-30 15:43:28 · 419 阅读 · 0 评论 -
数据结构、算法与应用
数据结构、算法与应用C++回顾函数与参数(实参会把值赋给形参),异常,动态存储空间分配,自有数据类型(class)原创 2019-09-28 18:10:15 · 526 阅读 · 1 评论 -
算法图解读书笔记 第8章 贪婪算法
第8章 贪婪算法8.1 教室调度问题思路:①选取结束时间最早的课,它就是这件教室上的第一节课。②选择必须第1节课结束后才开始的课,选择结束最早的为第二堂课。③重复贪婪算法很简单:每步都采用最优的做法。8.2 背包问题8.3 集合覆盖问题方法:①列出每个可能的广播台集合。②在这个集合中选择覆盖全美50个州的最小集合近似算法①选出这样一个广播台,即它覆盖了最多的为覆盖州。...原创 2019-08-13 11:40:15 · 129 阅读 · 0 评论 -
算法图解读书笔记 第7章 狄克斯特拉算法
狄克斯特拉算法继续讨论图,介绍加权图。为了能够找出加权图中前往X的最短路径,引出此算法。前一章使用的是广度优先搜索算法,找出的是最少的路径,但不一定是最快的路径,想要找出最快的路径需要狄克斯特拉算法。7.1 使用狄克斯特拉算法狄克斯特拉算法有4个步骤:① 找出在最短时间内到达的节点。② 更新该节点的邻居的开销③ 重复这个过程,直到对图中的每个节点都这样做了。④ 计算最短路径7.2...原创 2019-08-13 10:55:57 · 138 阅读 · 0 评论 -
算法图解读书笔记 第6章 广度优先搜索
广度优先搜索本章介绍的是图,首先介绍什么是图,然后再介绍一种图算法----广度优先搜索。广度优先搜素能够让你找出两样东西间的最短距离,含义很多,比如:①编写国际象棋AI,计算最少多少步获胜②编写拼写检查器,计算最少编写多少个地方就可以将拼错的单词改为正确的单词。③根据你的人际关系网络找到最近的医生。6.1 图简介例如前往东直门,最短路径需要倒2次车(3步),这种问题成为最短路径问题。...原创 2019-08-12 11:36:43 · 158 阅读 · 0 评论 -
算法图解读书笔记 第5章 散列表
散列表散列表用途广泛,学习散列表的内部机制:实现、冲突、和散列函数假设你在杂货店上班,顾客买东西时你需要查找价格,如果商品名称没按字母排序你查找apple时间复杂度为O(n)(简单查找),如果按字母排序了,时间复杂度为O(logn)(二分查找),当然如果能找到一个背诵了所有商品的雇员就再好不过了,因为他能立即回答出商品的价格,时间复杂度为O(1),5.1 散列函数将输入映射到数字,条件是;...原创 2019-08-12 09:08:55 · 138 阅读 · 0 评论 -
STL源码剖析 第5章 关联式容器
第5章 关联式容器STL关联式容器分为set(集合)和map(映射表)两大类,底层均是红黑树。关联式容器每个元素都有一个键值(key)和一个实值(value)。5.1 树的导览5.1.1 二叉搜索树以前讲过,二叉树是指“任何节点最多允许两个子节点”,二叉搜索树,任何节点的键值一定大于它左子树每个节点的键值,一定小于它右子树中每个节点的键值。5.1.2 平衡二叉搜索树“平衡”...原创 2019-08-15 11:53:09 · 137 阅读 · 0 评论 -
算法图解读书笔记 第11章 接下来怎如何做
接下来如何做这部分只取自己感兴趣的部分进行记录11.1 树二叉树类似下面这样:对于每一个节点,左子节点都比它小,而右子节点都比它大。假设你查找MAGGIE。为此,你先检查根节点。MAGGIE排在DAVID后面,因此你往右边找。MAGGIE排在MANNING前面,因此你往左边找。终于找到,二叉查找树平均速度O(logn),最糟糕O(n),有序数组查找时最糟糕也有O(log...原创 2019-08-14 10:22:16 · 137 阅读 · 0 评论 -
算法图解读书笔记 第9章 动态规划
动态规划将大问题分解成小问题,并先着手解决这些小问题。9.1 背包问题9.1.1 简单算法尝试各种可能的组合,并找出价格最高的组合。9.1.2 动态规划先解决小背包的问题,再逐步解决原来的问题。9.2 背包问题先解决小问题,在逐步解决大问题9.3 最长公共子串9.3.1 绘制网络9.3.2 填充网络9.3.3 揭晓答案9.3.4 最长公共子序列9.3.5 最...原创 2019-08-14 09:57:47 · 193 阅读 · 0 评论 -
算法图解读书笔记 第2章 选择排序
选择排序2.1 内存的工作原理将看演出时抽屉存放物品,每个抽屉可存放一个物品,看作是计算机内存的工作原理。2.2 数组和链表数组新加数据时需要重新申请内存,很麻烦。还有一种方法,是“预留座位”,但这样就造成了浪费,而且超出预留位还得转移。2.2.1 链表链表中的元素可存放在内存的任何位置,链表的每一个元素都存储了下一个元素的地址,从而是一系列随机的内存地址串在一起。在链表中添加元素很容...原创 2019-08-07 14:48:57 · 187 阅读 · 0 评论 -
算法图解读书笔记 第1章算法简介
算法简介1.引言①算法其实就是一组完成任务的指令。②二分查找从中间开始查找,其输入必须是一个有序的元素列表。一般而言,对于包含n个元素的查找用二分查找最多需要log2n,简单的只需要n步。③大O表示法1.3.1 算法的运行时间以不同速度增加二分查找的时间复杂度是O(logn),简单查找是O(n)1.3.2 理解不同的大O运行时间1.3.3 大O表示法指出了最糟糕情况下的运行时间...原创 2019-08-06 10:49:52 · 183 阅读 · 0 评论 -
算法图解读书笔记 第4章 快速排序
快速排序学习分而治之。学习快速排序,快速排序使用分而治之的策略。4.1 分而治之例子,一个农场主将土地分成方块。步骤:①找出基线条件,这种条件必须尽可能简单。②不断将问题分解,知道符合基线条件。首先找两个大方块,会余下一个小长条,将小长条再分成俩大方块,继续分,知道分到两个小方块为止。工作原理:①找出简单的基线条件②确定如何缩小问题的规模,使其符合基线条件编写涉及数组的 递归函数时,...原创 2019-08-08 10:46:41 · 178 阅读 · 0 评论 -
算法图解读书笔记 第3章 递归
递归递归是很多算法都使用的一种方法,学习如何将问题分为基线条件和递归条件。3.1 递归例子,盒子里面找钥匙(盒子里面还有盒子)方法一:①创建一个要查找的盒子堆②从盒子堆取出一个盒子,在里面找③如果找到的是盒子,就将其加入盒子堆中,以便以后再查找④如果找到钥匙,大功告成⑤回到第二步方法二:①检查盒子里的每样东西②如果是盒子就回到第一步③如果是钥匙就大功告成其实第一种方法使...原创 2019-08-08 09:36:08 · 183 阅读 · 0 评论 -
数据结构和算法---队列&栈
队列&栈1.队列先入先出,入队:Enqueue 出队:Dequeue#include int main() {// 1. Initialize a queue.queue q;// 2. Push new element.q.push(5);q.push(13);q.push(8);q.push(6);// 3. Check if queue is empty.i...原创 2019-08-01 12:08:14 · 283 阅读 · 0 评论 -
数据结构和算法---递归
递归1.递归原理递归就是函数调用本身。递归函数:①将问题分解为较小的范围②调用小问题从而解决小问题③处理得到的结果来解决大问题2.递推关系一个问题的结果与其子问题的结果之间的关系3.记忆化技术例子,斐波那契数列f(n)=f(n-1)+f(n-2)。记忆化是为了消除重复计算,方法是储存记忆结果。4.复杂度分析时间复杂度:记忆化为o(n)5.总结...原创 2019-08-01 11:50:15 · 85 阅读 · 0 评论 -
数据结构和算法之基础算法-算法思想
基础算法算法思想1.分治将一个规模为N的问题分解为K个规模较小的子问题。求出小问题的解便求出大问题的解。经典运用:大数相乘,比赛日程安排2.贪心算法从问题的某一个初始解出发,逐步逼近给定的目标,以便尽快求出最好的解。经典运用:装箱问题、背包问题3.动态规划动态规划算法是通过拆分问题,定义问题状态和状态之间的关系,使得问题能够以递推(或者说分治)的方式去解决。经典运用:最优排序二...原创 2019-07-29 13:51:01 · 159 阅读 · 0 评论 -
数据结构和算法之基础的数据结构
基础的数据结构线性结构*线性结构有:数组、队列、栈、链表1.数组数组是比较简单的数据结构,是连续的区域,很多地方都会用到它,栈和队列其实也可以看成是数组,只不过它被受限了。2.队列队列(queue)只能在队首和队尾进行操作,队尾进、队首出类似现实生活中的排队。3.栈栈(stack)也是一种基本的数据结构,也是受限的,它只能在栈顶进行操作。后进先出,可以当场一摞书去理解,现实生活中浏...原创 2019-07-29 11:08:55 · 71 阅读 · 0 评论