【「学习笔记」类欧几里得算法】教程文章相关的互联网学习教程文章

《数据结构与算法分析》学习笔记

第1章 数据结构和算法 三个主要目的: 学习常用的数据结构,形成一个程序员的基本数据结构工具箱(toolkit),这些工具是解决许多问题的理想选择; 引入并加强权衡(tradeoff)的概念,每一个数据结构都有其相关的代价和效益的权衡; 评估一个数据额结构或算法的有效性,通过分析确定哪个数据结构对一个新问题而言最合适。 计算机程序设计的核心有两个目标(有时两者相互冲突): 设计一种容易理解、...

数据结构与算法之美专栏学习笔记-栈【代码】

什么是栈 1.后进者先出,先进者后出,这就是典型的“栈”结构。 2.从栈的操作特性来看,是一种“操作受限”的线性表,只允许在端插入和删除数据。 为什么需要栈 1.栈是一种操作受限的数据结构,其操作特性用数组和链表均可实现。 2.但任何数据结构都是对特定应用场景的抽象,数组和链表虽然使用起来更加灵活,但却暴露了几乎所有的操作,难免会引发错误操作的风险。 3.所以,当某个数据集合只涉及在某端插入和删除数据,且满足后...

CG-光栅图形学消隐算法-学习笔记【图】

【引入】 1. 目的:当我们观察空间任何一个不透明的物体时,只能看到该物体朝向我们的那些表面,其余的表面由于物体所遮挡我们看不到。所以需要消隐,来消除被遮挡的不可见的线或面,消除二义性,绘制出意义明确、富有真实感的立体图形。 2. 分类: 1)物体空间消隐算法:Roberts算法、光线透射法 2)图像空间消隐算法:Z缓冲区(Z-Buffer)算法、扫描线Z-buffer算法、区域子分割算法。 一、Z-Buffer消隐算法(深度缓冲器算法) 1...

数据结构与算法之美专栏学习笔记-链表【代码】【图】

什么是链表 和数组一样,链表也是一种线性表。 从内存结构来看,链表的内存结构是不连续的内存空间,是将一组零散的内存块串联起来,从而进行数据存储的数据结构。 链表中的每一个内存块被称为节点Node。节点除了存储数据外,还需记录链上下一个节点的地址,即后继指针next。 链表的特点 插入、删除数据效率高,时间复杂度为O(1),只需更改指针指向即可。 随机访问效率低,时间复杂度为O(n),需要从链头至链尾进行遍历。 和数组相...

数据结构与算法学习笔记之后进先出的“桶”【代码】【图】

前言 栈最为一种的常用的数据结构,用“桶”来形容最合适不过;今天我们就来学习一下 正文 一、栈的定义? 1.“后进先出,先进后出”的数据结构。2.从操作特性来看,是一种“操作受限”的线性表,只可以在一端插入和删除数据。 二、为什么需要栈? 1.任何数据结构都是对特定应用场景的抽象,栈是一种操作受限的数据结构,其操作特性用数组和链表均可实现,但却暴露太多的操作接口,使用时容易出错; 2.当某个数据集合只涉及在一...

数据结构与算法之美专栏学习笔记-数组【图】

什么是数组 数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 线性表 线性表就是数据排成像一条线一样的结构。 常见的线性表结构:数组,链表、队列、栈等。 非线性表有:二叉树、图、堆等。连续的内存空间和相同类型的数据 优点:两限制使得具有随机访问的特性 缺点:删除,插入数据效率低 数组怎么根据下标随机访问的 通过寻址公式,计算出该元素存储的内存地址: a[i]_address = ...

数据结构与算法学习笔记之写链表代码的正确姿势(下)

前言 想成功你就得有决心,并有方法和技巧的付出精力。 正文 如何优雅的写出链表代码? 一、理解指针或引用的含义 1.含义: 将某个变量(对象)赋值给指针(引用),实际上就是就是将这个变量(对象)的地址赋值给指针(引用)。 指针中存储了这个变量的内存地址,指向了这个变量,通过指针就能找到这个变量 2.示例 p—>next = q; 表示p节点的后继指针存储了q节点的内存地址。p—>next = p—>next—>next; 表示p节点的后继指针...

学习笔记(二):使用K近邻算法检测Web异常操作

使用全量比较,而不是最频繁和最不频繁的比较。 1.数据搜集 我们使用词集的模型,将全部命令去重后形成一个大型向量空间,每个命令代表一个特征,首先通过遍历全部命令,生成对应词集。with open(filename) as f: for line in f:line = line.strip('\n')dist.append(line) fdist = FreqDist(dist).key() 2.特征化 使用词集将操作命令向量化。def get_user_cmd_feature_new(user_cmd_list,dist):user_cmd_feature=[]fo...

学习笔记(一):使用K近邻算法检测web异常操作

黑客入侵Web服务器后,通常会通过系统漏洞进一步提权,获得ROOT权限。我们可以通过搜集LINUX服务器的bash操作日志,通过训练识别出特定用户的操作习惯,然后进一步识别出异常操作的行为。 1.数据搜集 训练集包括50个用户的操作日志,每个日志包括15000个操作命令,其中5000条都是正常操作,后面的10000条日志中随机包含有异常操作,每100条操作作为一个操作序列,保存在列表里面,同时进行标注,每个操作序列只要有1条操作异...

CG-光栅图形学裁剪算法-学习笔记【图】

一、引入 1. 为什么要裁剪?——使用计算机处理图形信息时,计算机内部存储的图形往往比较大,而屏幕显示的知识图形的一部分。因此需要确定图形哪些部分落在显示区之内,哪些落在显示区之外。这个过程就称为裁剪。 2. 点的裁剪——只需判断点的坐标在不在矩形区域内,但判断图形中每个点是否在窗口内,太费时,不可取。 3. 直线段的裁剪——为复杂图形裁剪的基础。 要裁剪一条直线段,首先要判断: 1)它是否完全落在裁剪窗口内? ...

算法—数据结构学习笔记(二)栈【代码】

一、什么是栈?1.后进者先出,先进者后出,这就是典型的“栈”结构。2.从栈的操作特性来看,是一种“操作受限”的线性表,只允许在端插入和删除数据。二、为什么需要栈?1.栈是一种操作受限的数据结构,其操作特性用数组和链表均可实现。2.但,任何数据结构都是对特定应用场景的抽象,数组和链表虽然使用起来更加灵活,但却暴露了几乎所有的操作,难免会引发错误操作的风险。3.所以,当某个数据集合只涉及在某端插入和删除数据,且...

数据结构与算法学习笔记之 从0编号的数组【代码】

前言 数组看似简单,但掌握精髓的却没有多少;他既是编程语言中的数据类型,又是最基础的数据结构; 一个小问题:为什么数据要从0开始编号,而不是 从1开始呢? 正文 带着问题进入学习 如何实现随机访问? 什么是数组?数组(array)是一种线性表数据结构,它用一组连续的内存空间来储存一组具有相同类型的数据。我们从定义来分析: 线性表: 是数据排成像一条线一样的结构。每个线性表上的数据最多有前后两个方向。诸如数组,链...

数据结构与算法学习笔记 4 (2018.10.08)【图】

渐进分析:大o记号回到原先的问题:随着问题规模的增长,计算成本如何增长? 注意:这里更关心足够大的问题,注重考察成本的增长趋势 渐进分析:在问题的规模足够大后,计算成本如何成长? Asymptomatic analysis :当n>>2后,对于规模为n输入,算法 需执行的基本操作次数:T(n)=? 需...

数据结构与算法学习笔记之 复杂度分析

前言:大家都知道数据结构和英语,就如同程序员的两条腿一样;只有不断的积累,学习,拥有了健壮的“双腿”才能越走越远;在数据结构和算法的领域,不得不承认自己就是一只菜鸟;需要不断的学习;在学习过程中,经常会有一些自己的看法,和别人独特的见解;我都会一一做好笔记,以便进步; 正文:复杂度分析 一、什么是复杂度分析?1.数据结构和算法解决是“如何让计算机更快时间、更省空间的解决问题”,而时间、空间复杂度做为数...

#数据结构与算法学习笔记#剑指Offer29:整数中1出现的次数 + 分段思想/按位考虑 + 测试用例(Java、C/C++)【图】

2018.10.5 感受到开学之后工作和课业的双重压力,加上近段时间自己出了点小事故,因此断更了许久。没事,继续。 这道题有两种复杂度为的算法。 方法1:递归(分段思想)。 所有数字出现1的个数 = 每一段数字中出现1的个数之和 1. 对于输出的数字n,其最高位为x,将其分成1-i、i+1-n两段。其中,i为n除以x的余数,i-n的数字数目为x倍数(例如n=21345,x为10000,则将n分为1-1345,1346-21345)。 2. 后半段中最高位上取1的情况分为两...