2018年7月26日
摘要: 一.贪心算法 1.总是做出局部最优解,寄希望这样的选择能导致全局最优解,即每一步都做出当时看起来最佳的选择, 2.贪心算法并不保证得到最优解,但对很多问题可以求得最优解 3. 对于一个问题,可能有多种贪心策略 4.贪心算法通常自顶向下地设计,做出一个选择,然后求解剩下的那个子问题,而不是自底向上地求 阅读全文
posted @ 2018-07-26 15:56 温润有方 阅读(1578) 评论(0) 推荐(0) 编辑
摘要: 一.动态规划,通常用于求解最优化子结构问题和子问题重叠的情况 (1)最优子结构:问题的最优解由相关子问题的最优解组合而成,而这些子问题可以独立求解 (2)子问题重叠:不同的子问题具有公共的子子问题。比如:问题4 可以分出(3,2,1,0)四种子问题,但其中问题3和问题2都可以分出问题0和问题1,这就 阅读全文
posted @ 2018-07-26 15:55 温润有方 阅读(456) 评论(0) 推荐(1) 编辑
摘要: 一.递归(Recursion) 1.递归:以相似的方式重复自身的过程 2.递归在程序中表现为:在函数的定义中直接或间接调用函数自身 3.递归和循环: (1)递归是有去(递去)有回(归来),因为存在终止条件,比如你打开一扇门还有一扇门,不断打开,最终你会碰到一面墙,然后返回 (2)循环是有去无回,但可 阅读全文
posted @ 2018-07-26 15:47 温润有方 阅读(3326) 评论(0) 推荐(0) 编辑
摘要: 一.扩张数据结构 1.目的:给基本数据结构进行扩张以支持一些附加功能或者利用附加信息加速已有的操作 2.基本步骤(可以用于检查和纠错) (1)选择一种基础的数据结构(红黑树,树,链表,队列等) (2)确定基础数据结构中要维护的附加信息(具体数据,或属性,或指针类信息等) (3)检验基础数据结构上的基 阅读全文
posted @ 2018-07-26 15:46 温润有方 阅读(344) 评论(0) 推荐(0) 编辑
摘要: 一.树 1.树是有n个结点的集合,仅有一个根结点,有若干子结点 2.结点拥有的子树数称为结点的度;树的度是树内各结点的度的最大值 3.叶节点(终端节点):度为0的结点;树中还有双亲结点,孩子结点,兄弟结点,子孙结点,祖先结点 4.结点的层数从根开始定义,根为第一层;树中结点的最大层次称为树的深度(高 阅读全文
posted @ 2018-07-26 10:53 温润有方 阅读(361) 评论(0) 推荐(0) 编辑
摘要: 一.符号表问题 1.一个表里面放着n条记录,(记录x:x通常是一个指向实际数据的指针) 2.在每个记录中,存在一个记录的键,还存在一些卫星数据(属于键的附加数据) 3.排序是对记录进行排序,而不是关键字 4.对表进行操作:添加记录,删除记录,查找具有特定键的记录 二.直接映射表(数组) 1.适用于关 阅读全文
posted @ 2018-07-26 10:21 温润有方 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 链表:通过指针对每个元素进行存储 1 #假设无序双向链表 2 class Node: 3 def __init__(self, prev, next, key): 4 '''节点(前继,后继,关键字)''' 5 self.prev = prev 6 self.next = next 7 self.k 阅读全文
posted @ 2018-07-26 10:18 温润有方 阅读(321) 评论(0) 推荐(0) 编辑
摘要: 一.栈(stack) 1.后进先出,压入(push),弹出(pop) 2.栈顶 S[S.top] 操作,S.top指向最新压入的元素 1 #栈(stack) 2 class Stack: 3 def __init__(self,S=[]): 4 #初始化空栈,设置属性栈顶指针top和栈的列表表示 5 阅读全文
posted @ 2018-07-26 10:16 温润有方 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 一.中位数和顺序统计量 顺序统计量:第i个顺序统计量是该集合中第i小的元素 中位数A[i]:i=[(n+1)/2] 选择问题:在一个包含n个(互异)元素组成的无序集合中,在不排序的情况下,选出第k个顺序统计量 二.选择最大最小值:通过遍历集合每个元素,记录最大最小值。O(n) 1 #最小值和最大值 阅读全文
posted @ 2018-07-26 10:12 温润有方 阅读(931) 评论(0) 推荐(0) 编辑