算法

数据结构-概念总结

大城市里の小女人 提交于 2020-03-28 19:14:48
数据结构概念总结 Data Structures + Algorithms = Programs 一.数据结构 1.基本概念: 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合 2.数据结构的逻辑结构分为四种: 集合结构,线性结构,树形结构,图结构。 3.数据结构的物理结构分为两种: 顺序存储结构和链式存储结构. 4.学习数据结构的用途: 数据结构在计算机专业课程体系中起到承上启下的作业,熟练使用数据结构可以使程序运行的更快更流畅 思维导图: 二.算法 1.定义: 对特定问题求解步骤的一种描述,它是指令的特定序列,每一条指令表示一个或多个操作 2.特性: 有穷性,确定性,可行性,输入,输出。 3.算法的描述: 自然语言,流程图,程序设计语言,伪代码。 4.算法分析: (1)算法设计的目标: 正确性,可使用性,可读性,健壮性,时间效率高与存储量低 (2)两种衡量算法效率的方法: 事后统计法(把程序跑一遍): 必须执行程序,且存在其他因素掩盖算法本质 事前估计法(撇开软硬件相关因素,仅考虑算法本身效率): 算法执行时间=基本运算时间*运算次数 基本运算:被视为算术运算的一般是最深层循环内语句 (3)算法效率分析: 算法的执行时间可由其基本运算的执行次数来计算 时间复杂度:记号"O",表示随问题规模n增大,算法执行时间的增长率和f(n

数据结构、算法及线性表总结

独自空忆成欢 提交于 2020-03-28 19:09:16
数据结构、算法及线性表总结 本学期学习了数据结构这门课,为了能够理清学习历程,在此记录学习到的知识,以供参考。 一、本课程的思维导图(持续更新) 二、重要概念的笔记及个人解析 <font color=>第一章:绪论 1)数据结构的定义:数据结构是指所有数据元素以及数据元素之间的关系,可以看作是相互之间存在着某种特定关系的数据元素的集合 (带结构的数据的集合) 2)逻辑结构的定义:逻辑结构是从数据元素的逻辑关系上描述数据的,它与数据的存储无关,是从具体问题中抽象出来的数学模型。 (用来描述数据之间有怎样的关系,或哪种类型的关系) 3)逻辑结构的类型:逻辑结构是多样复杂的,现阶段我们接触到的有 集合 、 线性结构 、 树形结构 以及 图形结构 。(目前学习到线性结构) 4)存储结构的定义:存储结构是数据元素及其关系在计算机存储器中的存储表示也称为物理结构,常用的有 顺序存储 、 链式存储 、 索引存储 和 哈希存储 四中存储结构。 5)顺序存储结构:用该结构存储数据元素,所有数据元素在存储器中占有一整块存储空间, 可将逻辑结构直接映射到存储结构 。(优点:存储效率高,没有额外占用的空间,还可以实现对元素的随机存取。缺点:不便于数据修改,一个元素的变动就可能使其他一系列元素也要进行移动) 6)链式存储结构:每一个数据元素占用的只是一个内存节点,每个节点单独分配,地址也不一定连续

数构与算法 | 什么是大 O 表示算法时间复杂度

烂漫一生 提交于 2020-03-28 18:22:03
 正文: 开篇我们先思考这么一个问题:一台老式的 CPU 的计算机运行 O(n) 的程序,和一台速度提高的新式 CPU 的计算机运 O(n2) 的程序。谁的程运行效率高呢? 答案是前者优于后者。为什么呢?我们从时间复杂度分析就可以知道。 1、什么是时间复杂度? 在进行算法分析时,语句总的执行次数 T(n) 是关于问题的规模n 的函数,进而分析 T(n) 随 n 的变化情况并确定 T(n) 的数量级,算法的时间复杂度,也就是算法的时间度量,记作:T(n) = O(f( ))。它表示随问题的规模 n 的增大,算法的执行时间的增长率 f(n) 的增长率相同,称作算法的渐近时间复杂度,简称为时间的复杂度,其中 f(n) 是问题规模n的某个函数。 这样用大写 [ O( ) ] 来体现算法时间复杂度的记法,我们就称之为大O记法。例如:O(n)、O(1)、O(n2)、O(log n) 等等。一般情况下,随着 n 的增大,T(n) 增长最慢的算法为最优算法。 2、推导大O阶的方法 如何推导大O阶的表示方法,总结了三句口诀: 用时间1取代运算时间中的所有加法常数。 在修改后的运行的函数中,只保留最高阶项。 如果最高阶项存在且不是1,则去除与这个项相乘的常数。得到的结果就是大O阶。 说了太多文字显得太抽象,我们来看看一个例子你就明白了。 如图这个时间复杂度你知道是多少吗? ​ 分析: 当 i = 0时

AIOps基本概念以及能力分级

牧云@^-^@ 提交于 2020-03-28 14:55:04
AIOps 自从 Gartner 于2016年提出至今已有一段时间,虽然在顶级互联网及电信企业,已有较多落地,但至今仍无基于生产实践的理论体系及实施指南。 高效运维社区和云计算开源产业联盟(OSCAR联盟)牵头,和互联网大厂如 BATJ、360、华为、平安科技等的 AIOps 负责人联合编写了国内外首个《企业级 AIOps 实施建议》白皮书,以缩AIOps 实施路径。 一、整体介绍 AIOps,即 Artificial Intelligence for IT Operations,智能运维,将人工智能应用于运维领域,基于已有的运维数据(日志、监控信息、应用信息等),通过机器学习的方式来进一步解决自动化运维没办法解决的问题。 早期的运维工作大部分是由运维人员手工完成的,这被称为手工运维或人肉运维。这种落后的生产方式,在互联网业务快速扩张、人力成本高企的时代,难以维系。 这时,出现了自动化运维,用可被自动触发的、预定义规则的脚本,来执行常见的、重复性的运维工作,从而减少人力成本,提高运维效率。 自动化运维可以认为是一种基于行业领域知识和运维场景领域知识的专家系统。 但是,随着整个互联网业务急剧膨胀,以及服务类型的复杂多样,“基于人为指定规则”的专家系统逐渐变得力不从心。自动化运维的不足,日益凸显,这也为 AIOps 带来发展机遇。 AIOps 不依赖于人为指定规则

机器学习算法

谁说我不能喝 提交于 2020-03-28 07:40:58
转载自: http://www.cnblogs.com/tornadomeet   朴素贝叶斯:   有以下几个地方需要注意:   1. 如果给出的特征向量长度可能不同,这是需要归一化为通长度的向量(这里以文本分类为例),比如说是句子单词的话,则长度为整个词汇量的长度,对应位置是该单词出现的次数。   2. 计算公式如下:      其中一项条件概率可以通过朴素贝叶斯条件独立展开。要注意一点就是 的计算方法,而由朴素贝叶斯的前提假设可知, = ,因此一般有两种,一种是在类别为ci的那些样本集中,找到wj出现次数的总和,然后除以该样本的总和;第二种方法是类别为ci的那些样本集中,找到wj出现次数的总和,然后除以该样本中所有特征出现次数的总和。   3. 如果 中的某一项为0,则其联合概率的乘积也可能为0,即2中公式的分子为0,为了避免这种现象出现,一般情况下会将这一项初始化为1,当然为了保证概率相等,分母应对应初始化为2(这里因为是2类,所以加2,如果是k类就需要加k,术语上叫做laplace光滑, 分母加k的原因是使之满足全概率公式)。    朴素贝叶斯的优点:   对小规模的数据表现很好,适合多分类任务,适合增量式训练。    缺点 :   对输入数据的表达形式很敏感。   决策树:   决策树中很重要的一点就是选择一个属性进行分枝,因此要注意一下信息增益的计算公式,并深入理解它

校招准备-数据结构与算法

落爺英雄遲暮 提交于 2020-03-28 06:29:54
校招中最基础的一环,笔试与白板撸算法 CS中最基本的能力,这方面的准备十分必要,但是准备过程必定十分痛苦 虽常言道水滴石穿,但是多少小河小溪在石穿之前干涸! ----------------------------------- 每天2-3道算法题,完不成就晚上加班 ----------------------------------- 一次总计花一个小时时间学习: 1.找到对应知识点,梳理一遍,弄清楚难点 2.刷15-20分钟小题,来检测自己这块的掌握情况 3.刷20-30分钟对应的算法题 ---------------------------------------------- 结合算法导论,啊哈算法,王道数据结构等书籍; 数据结构(结合c,java与python语言) 1-线性表:链表的各种操作( 双链表的插入,删除 手写 );java中的应用; (6.7 链表,牛客做题) 关于删除链表节点:先解决当前节点后面的,再解决前面的 栈:定义,基本操作(初始化,判断为空,进栈,出栈,读栈顶元素,),顺序栈和链栈;应用 1-队列:定义,基本操作(初始化,判断为空,入队,出队,),顺序存储和链式存储,双端队列;应用 数组与矩阵:数组的各种基本操作,矩阵的压缩存储 1-字符串:字符串的基本操作与实现 堆:定义与基本操作,应用 1-树:二叉树的定义,基本性质,顺序存储,链式存储

加密算法整理

给你一囗甜甜゛ 提交于 2020-03-28 02:41:05
加密算法简介    数据加密的基本过程就是对原来为明文的文件(或数据)按某种算法进行处理,使其成为不可读的一段密文,只能通过输入正确的密钥之后才能显示密文的原始信息。根据加密技术的不同,大致分为对称加密和非对称加密。   对称式加密就是加密和解密使用同一个密钥(secret key),通常称之为“Session Key ”这种加密技术在当今被广泛采用,如美国政府所采用的DES加密标准就是一种典型的“对称式”加密法,它的Session Key长度为56bits。   非对称式加密就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为公钥(public key)和私钥(private key),这两个必需配对使用。这里的公钥是指可以对外公布的,私钥则不能,只能由持有人一个人知道。它的优越性就在这里,因为对称式的加密方法如果是在网络上传输加密文件就很难不把密钥告诉对方,不管用什么方法都有可能被别窃听到。而非对称式的加密方法有两个密钥,且其中的公钥是可以公开的,也就不怕别人知道,收件人解密时只要用自己的私钥即可以,这样就很好地避免了密钥的传输安全性问题。 常见的加密算法 DES(Data Encryption Standard):对称算法,数据加密标准,速度较快,适用于加密大量数据的场合; 3DES(Triple DES):是基于DES的对称算法,对一块数据用三个不同的 密钥

【DotNet加密方式解析】-- 好文收藏

匆匆过客 提交于 2020-03-28 02:38:43
索引: 目录索引 By -- 彭泽 一、 DotNet加密方式解析--散列加密 笔记 :   散列加密种类:     1.MD5 128位     2.SHA-1 160位     3.SHA-256 256位     4.SHA-384 384位     5.SHA-512 512位 二、 DotNet加密方式解析--对称加密 笔记:   对称加密种类:     1.Rijndael算法:运用反复运算的加密算法,允许数据区块及秘钥长度可变,数据区块与秘钥长度变动时是各自独立的。     2.DES算法:       a)DES加密:采用的是分组加密方式,使用56位秘钥加密64位明文,最后产生64位密文。       b)3DES加密:采用168位的秘钥,三重加密,速度比较慢。       c)TripleDES加密:用两个秘钥对数据进行3次加密解密运算。     3.RC算法:       a)RC2加密:运用秘钥长度可变,对明文采取64位分组加密。       b)RC4加密:运用一个秘钥长度可变的面向字节流的加密算法,以随机置换为基础。       c)RC5加密:运用一种分组长度、秘钥长度、加密迭代轮数都可变的分组加密算法(包含秘钥扩展、加密算法、解密算法)。       d)RC6加密:RC6继承了RC5的循环移位思想,RC6是输入的明文由原先2个区扩展为4个块区。 三、

浅谈加密算法

帅比萌擦擦* 提交于 2020-03-28 02:37:52
前言 数字签名、信息加密 是前后端开发都经常需要使用到的技术,应用场景包括了用户登入、交易、信息通讯、oauth 等等,不同的应用场景也会需要使用到不同的签名加密算法,或者需要搭配不一样的 签名加密算法 来达到业务目标。这里简单的给大家介绍几种常见的签名加密算法和一些典型场景下的应用。 正文 1. 数字签名 数字签名,简单来说就是通过提供 可鉴别 的 数字信息 验证 自身身份 的一种方式。一套 数字签名 通常定义两种 互补 的运算,一个用于 签名,另一个用于 验证。分别由 发送者 持有能够 代表自己身份 的 私钥 (私钥不可泄露),由 接受者 持有与私钥对应的 公钥 ,能够在 接受 到来自发送者信息时用于 验证 其身份。 注意 :图中 加密过程 有别于 公钥加密 ,更多 介绍戳这里 。 签名 最根本的用途是要能够唯一 证明发送方的身份 ,防止 中间人攻击 、 CSRF 跨域身份伪造 。基于这一点在诸如 设备认证 、 用户认证 、 第三方认证 等认证体系中都会使用到 签名算法 (彼此的实现方式可能会有差异)。 2. 加密和解密 2.1. 加密 数据加密 的基本过程,就是对原来为 明文 的文件或数据按 某种算法 进行处理,使其成为 不可读 的一段代码,通常称为 “密文”。通过这样的途径,来达到 保护数据 不被 非法人窃取、阅读的目的。 2.2. 解密 加密 的 逆过程 为 解密,即将该

数据加密算法(DEA)和DES

蹲街弑〆低调 提交于 2020-03-28 00:19:25
数据加密算法(Data Encryption Algorithm,DEA)是一种对称加密算法,很可能是使用最广泛的密钥系统,特别是在保护金融数据的安全中,最初开发的DEA是嵌入硬件中的。通常,自动取款机(Automated Teller Machine,ATM)都使用DEA。它出自IBM的研究工作,IBM也曾对它拥有几年的专利权,但是在1983年已到期后,处于公有范围中,允许在特定条件下可以免除专利使用费而使用。1977年被美国政府正式采纳。 数据加密标准DES   DES的原始思想可以参照二战德国的恩格玛机,其基本思想大致相同。 传统的密码加密都是由古代的循环移位思想而来 ,恩格玛机在这个基础之上进行了扩散模糊。但是本质原理都是一样的。现代DES在二进制 级别 做着同样的事:替代模糊,增加分析的难度。 加密原理   DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES 使用 16 个循环,使用异或,置换,代换,移位操作四种基本运算。 基本原理 基本原理   入口参数有三个:key、data、mode。