随笔分类 -  数据结构与算法

摘要:算法 动态规划 定义 分治法:将问题划分为不相交的子问题,递归的求解子问题,在将它们的解组合起来,求出原问题的解。 动态规划:通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 动态规划和递归的最大的区别,就是在碰到重叠子问题时,是否只需要计算一次。 过程 1. 拆分子问题,把整体问题拆成 阅读全文
posted @ 2020-02-27 16:42 cheng102e 阅读(122) 评论(0) 推荐(0) 编辑
摘要:数据结构 图 定义 图是一些顶点的集合,这些顶点通过一些边想连接,顶点用圈表示,边通过线表示,是一个多对多的数据结构。 可以拆分,就是点集V和边集E的集合。 特点 边可以是有方向的,只能单向前进,也可能是双向的,可以来回运动,也有的边带有权重,模拟为长度什么的物理量。 存储方式 1. 邻接表 每一个 阅读全文
posted @ 2020-02-26 11:47 cheng102e 阅读(152) 评论(0) 推荐(0) 编辑
摘要:数据结构 树 定义 树是一种非线性的数据结构,由n(n 0)个有限节点组成,是一个有层次关系的集合,像一棵倒立着的树。 特点 1. 每个节点都只有有限个子节点或无子节点 2. 没有父节点的节点称为根节点 3. 每一个非根节点有且只有一个父节点 4. 除了根节点外,每个子节点可以分为多个不相交的子树 阅读全文
posted @ 2020-02-26 11:16 cheng102e 阅读(147) 评论(0) 推荐(0) 编辑
摘要:数据结构 栈和队列 定义 栈和队列是两种特殊的线性表。 栈(Stack)是一种后进先出的数据结构,可以想象成一个瓶子,先进去的在下层,要后出来。 而队列(Queue)则是先进先出,就像排队一样,先进队伍的先出来。 栈的操作 1. Stack() 创建一个空的栈 2. void push(T s) 往 阅读全文
posted @ 2020-02-25 22:34 cheng102e 阅读(157) 评论(0) 推荐(0) 编辑
摘要:数据结构 线性表 定义 线性表是最基本、最简单、也是最常用的一种数据结构。线性表(linear list)是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列。 线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(注意,这句话只适用 阅读全文
posted @ 2020-02-25 21:38 cheng102e 阅读(218) 评论(0) 推荐(0) 编辑
摘要:非对称加密 RSA算法 非对称 传统算法是对称加密,共用密钥,非对称加密就使用了两个秘钥,一个公钥加密,一个私钥解密。 加密过程 1. 随机选取两个质数 p,q 2. 计算公共模数 n = p q 3. 欧拉函数 φ(n) = (p 1) (q 1) 4. 计算公钥 e < φ(n),二者互质 5. 阅读全文
posted @ 2020-02-22 18:04 cheng102e 阅读(371) 评论(0) 推荐(0) 编辑
摘要:递归迭代与斐波那契数列 概念 递归: 程序调用自身的编程技巧称为递归,是函数自己调用自己. 迭代: 利用变量的原值推算出变量的一个新值. 区别 如果递归是自己调用自己(A调用A)的话,迭代就是A不停的调用B. 代码 这里用了斐波那契数列数列,第一项为0第二项为1,之后每一项都是前两项的和。 对于递归 阅读全文
posted @ 2020-02-22 17:05 cheng102e 阅读(258) 评论(0) 推荐(0) 编辑
摘要:排序算法总结 前言 所谓排序算法,即通过特定的算法因式将一组或多组数据按照既定模式进行重新排序。这种新序列遵循着一定的规则,体现出一定的规律,因此,经处理后的数据便于筛选和计算,大大提高了计算效率. 这里我就整理一下几种常用的排序算法,复杂度什么放在最后部分。 [目录] 1. "冒泡排序(Bubbl 阅读全文
posted @ 2020-02-21 22:29 cheng102e 阅读(135) 评论(0) 推荐(0) 编辑
摘要:查找算法 二分查找 标题 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。 过程 首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中 阅读全文
posted @ 2020-02-03 13:08 cheng102e 阅读(199) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示