计算机算法

8大数据结构

…衆ロ難τιáo~ 提交于 2019-12-04 20:58:37
数据结构分类 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成 。 常用的数据结构有:数组,栈,链表,队列,树,图,堆,散列表等,如图所示: 每一种数据结构都有着独特的数据存储方式,下面为大家介绍它们的结构和优缺点。 1 、数组 数组是可以再内存中连续存储多个元素的结构,在内存中的分配也是连续的,数组中的元素通过数组下标进行访问,数组下标从 0 开始。例如下面这段代码就是将数组的第一个元素赋值为 1 。 int[] data = new int[100]; data[0] = 1; 优点: 1 、按照索引查询元素速度快 2 、按照索引遍历数组方便 缺点: 1 、数组的大小固定后就无法扩容了 2 、数组只能存储一种类型的数据 3 、添加,删除的操作慢,因为要移动其他的元素。 适用场景: 频繁查询,对存储空间要求不大,很少增加和删除的情况。 2 、栈 栈是一种特殊的线性表,仅能在线性表的一端操作,栈顶允许操作,栈底不允许操作。 栈的特点是:先进后出,或者说是后进先出,从栈顶放入元素的操作叫入栈,取出元素叫出栈。 栈的结构就像一个集装箱,越先放进去的东西越晚才能拿出来,所以,栈常应用于实现递归功能方面的场景,例如斐波那契数列。 3 、队列 队列与栈一样,也是一种线性表,不同的是,队列可以在一端添加元素,在另一端取出元素,也就是:先进先出

20181026 计算机科学与计算机工程研究内容综述

时光怂恿深爱的人放手 提交于 2019-12-03 09:52:23
本文依据所学知识,简要地对计算机科学与计算机工程研究内容的有限认知进行概述,并做出相应的比较和总结. 关于计算机科学研究, 是一个探索的过程.通俗地说,研究的第一步是查阅资料,包括算法与卷积神经网络等方面的资料.接着是处理算法,既可以写新算法,也可以通过修改现有的算法来改进形成更好的算法,同时分析算法的复杂度,使其尽可能地降低.有了算法,一般下一步就是进行的实验,利用Matlab, TensoFlow (Python)等工具不断测试,进行迭代处理.最后计算精度,分析算法的可行性,再考虑是否发表论文. 而计算理论,算法与数据结构,编程方法与编程语言,以及计算机元素与架构四大领域是计算机科学的主要研究方向. 更具体地说,计算机科学是对开发计算机软件和研究计算理论,自顶向下来看,其覆盖着包括从各种抽象的模型到上层的软件设计,到应用层软件开发,到框架的构建和实现,再到操作系统和编译器的研究.。 关于计算机工程研究,是一个实现的过程.和计算机科学一样,第一步也需要查阅资料,不过是寻找解决方法,随后进行小规模的试验.再对实现方法做出分析,由C语言>C++>Java>FPGA的优先顺序选择编程语言,不断调试程序,分析精度.最后再次试验测试,得出结果后再考虑是否发表论文,或申请专利. 所以计算机工程是从计算机工程设计的角度,研究电路、电子、VLSI设计的学科,对于数理逻辑要求没有计算机科学高.

奇怪的计算机 面试算法(二)

拜拜、爱过 提交于 2019-12-02 23:56:34
import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class T1 { /** * 有一种奇怪的计算机,它的内存是由若干位组成的(初始都是0),并且它只能进行如下操作: * 选择某一位和一个值(0或1),从选中的位开始到最后一位的值都会被改成选定的值。比如,当前内存为“0010”,若选择第二位和值1,那么内存将会被改成“0111”。 * 现在要你将内存从初始状态改成某个特定的序列A,最少需要多少次操作呢? * * 输入 * 一行,一个由“0”和“1”组成的字符串,表示特定序列A * * 输入约束 * 序列A中仅包含字符0或1,且字符个数(内存大小)范围是 [1,50] * * 输出 * 一行,一个整数,表示为了得到这个序列最少需要的操作次数 * * 例子 * 输入 * 0011 * 输出 * 1 * @param args */ public static void main(String[] args) { Scanner s = new Scanner(System.in); String str = s.next(); List<Character> chars = new ArrayList<>(); for (int i = 0; i < str

计算机网络运输层习题5-38

匿名 (未验证) 提交于 2019-12-02 23:45:01
5-38  设TCP的ssthresh(慢开始门限ssthresh)的初始值为8(单位为报文段)。当拥塞窗口上升到12时网络发生了超时,TCP使用慢开始和拥塞避免。试分别求出第1轮次到第15轮次传输的各拥塞窗口大小。你能说明拥塞窗口每一次变化的原因吗? 解答:拥塞窗口大小及变化原因见表T-5-38 轮次 拥塞窗口 拥塞窗口变化的原因 1 1 网络发生了超时,TCP使用慢开始算法 2 2 拥塞窗口值加倍 3 4 拥塞窗口值加倍 4 8 拥塞窗口值加倍 5 9 TCP使用拥塞避免算法,拥塞窗口值加1 6 10 TCP使用拥塞避免算法,拥塞窗口值加1 7 11 TCP使用拥塞避免算法,拥塞窗口值加1 8 12 TCP使用拥塞避免算法,拥塞窗口值加1 9 1 网络发生了超时,TCP使用慢开始算法 10 2 拥塞窗口值加倍 11 4 拥塞窗口值加倍 12 6 拥塞窗口值加倍,但到达12的一半时,改为拥塞避免算法 13 7 TCP使用拥塞避免算法,拥塞窗口值加1 14 8 TCP使用拥塞避免算法,拥塞窗口值加1 15 9 TCP使用拥塞避免算法,拥塞窗口值加1 欢迎评论,共同进步!!

计算机操作系统算法

荒凉一梦 提交于 2019-12-02 11:25:43
先进先出置换算法 先进先出置换算法(FIFO):是最简单的页面置换算法。这种算法的基本思想是:当需要淘汰一个页面时,总是选择驻留主存时间最长的页面进行淘汰,即先进入主存的页面先淘汰。其理由是:最早调入主存的页面不再被使用的可能性最大。 算法实现代码如下(C语言),数字为随机生成。 # include <stdio.h> # include <stdlib.h> # define N 20 struct number { int t ; int number ; } B [ 3 ] ; int max ( int t1 , int t2 , int t3 ) { int max , count ; if ( t1 > t2 ) { max = t1 ; count = 0 ; } else { max = t2 ; count = 1 ; } if ( t3 > max ) count = 2 ; return count ; } int main ( int argc , char * argv [ ] ) { int i , j , flag , k = 0 , count = 1 , A [ N ] ; srand ( ( unsigned int ) time ( NULL ) ) ; for ( i = 0 ; i < N ; i ++ ) { A [ i ] = rand

计算机操作系统(第四版)汤小丹编著 第三章习题

拜拜、爱过 提交于 2019-12-02 10:06:52
第三章处理机调度与死锁 1.高级调度与低级调度的主要任务是什么?为什么要引入中级调度? 答:高级调度的主要任务是根据某种算法,把外存上处于后备队列中的那些作业调入内存。 低级调度是保存处理机的现场信息,按某种算法先取进程,再把处理器分配给进程。 引入中级调度的主要目的是为了提高内存利用率和系统吞吐量。使那些暂时不能运行的进程不再占用内存资源,将它们调至外存等待,把进程状态改为就绪驻外存状态或挂起状态。 2.何谓作业、作业步和作业流? 答:作业包含通常的程序和数据,还配有作业说明书。系统根据该说明书对程序的运行进行控制。批处理系统中是以作业为基本单位从外存调入内存。 作业步是指每个作业运行期间都必须经过若干个相对独立相互关联的顺序加工的步骤。 作业流是指若干个作业进入系统后依次存放在外存上形成的输入作业流;在操作系统的控制下,逐个作业进程处理,于是形成了处理作业流。 3.在什么情况下需要使用作业控制块JCB?其中包含了哪些内容? 答:每当作业进入系统时,系统便为每个作业建立一个作业控制块JCB,根据作业类型将它插入到相应的后备队列中。 JCB 包含的内容通常有:1) 作业标识2)用户名称3)用户账户4)作业类型(CPU繁忙型、I/O芳名型、批量型、终端型)5)作业状态6)调度信息(优先级、作业已运行)7)资源要求8)进入系统时间9) 开始处理时间10)作业完成时间11)

学习总结

一个人想着一个人 提交于 2019-12-02 00:21:47
第四部分 程序设计层 第六章 低级程序设计语言和伪代码 机器语言是最低级的编程语言,它被内置在机器中。在汇编语言中能用一些字母的组合来表示机器语言指令。伪代码能够表示算法。 6.1计算机操作 我们所用的程序设计语言都必须反映出计算机能够执行的操作类型。 计算机是能够存储、检索和处理数据的可编程电子设备。 这个定义中的操作字包括 可编程的、存储、检索和处理 。 处理、检索和处理 是计算机能够对数据执行的动作。 也就是说,控制单元执行的指令能够把数据存储到机器的内存中,在机器内存中检索数据,在算术逻辑单元中以某种方式处理数据。词语“处理”非常通用。处理涉及在数据值上执行算术和逻辑操作。 6.2机器语言 机器语言 :由计算机直接使用的二进制编码指令构成的语言。 机器代码因机器不同而不同,每一种机器有一个特定的能够被执行的操作集合,称为这种计算机的机器语言。 虚拟机:为了模拟真实机器的重要特征而设计的假想机器。 一个字节能够表示的最大十进制数是255,用二进制表示是11111111,用十六进制表示是FF。一个字(16位)能够表示的最大十进制数是65535,用二进制表示是1111111111111111,用十六进制表示是FFFF。如果既要表示正数,又要表示负数,那么在量级上就会少一位,因此可以表示的十六进制数的范围是-7FFF到+7FFF,相当于十进制数的-32767到+32767.

2019-2020-1学期 20192406 《网络空间安全专业导论》第三周学习总结

纵饮孤独 提交于 2019-12-01 23:31:49
第六章 低级程序设计语言与伪代码 6.1 计算机操作 我们所用的程序设计语言都必须反映出计算机能够执行的操作类型。让我们通过重述计算机的定义来开始新的讨论:计算机是能够存储、检索和处理数据的可编程电子设备。 这个定义中的操作字包括 可编程的 、 存储 、 检索 和 处理 。上一章指出了数据和操作数据的指令逻辑上是相同的,它们存储在相同的地方。这就是“可编程的”这个词的意义所在。操作数据的指令和数据一起存储在机器中。要改变计算机对数据的处理,只需要改变指令即可。 存储、检索和处理 是计算机能够对数据执行的动作。也就是说,控制单元执行的指令能够把数据 存储 到机器的内存中,在机器内存中 检索 数据,在算术逻辑单元中以某种方式 处理 数据。词语“处理”非常通用。在机器层,处理涉及在数据值上执行算术和逻辑操作。 6.2 机器语言 机器语言 :由计算机直接使用的二进制编码指令构成的语言 Pep/8:一台虚拟机 虚拟机 :为了模拟真实机器的重要特征而设计的假想机器 Pep/8反应的重要特征 回忆第5章中所说的,寄存器是中央处理器中算术/逻辑单元的一小块存储区域,它用来存储特殊的数据和中间值。Pep/8有七个寄存器,我们重点研究其中三个: 程序计数器(PC) , 其中包含下一条即将被执行的指令的地址。 指令寄存器(IR) , 其中包含正在被执行的指令的一个副本。 累加器 (是一个寄存器)。

程序设计层第6、7章读书笔记 rwl

夙愿已清 提交于 2019-12-01 20:33:40
程序设计层第6、7章读书笔记 第6章 低级程序设计语言与伪代码 6.1 计算机操作 计算机是能够 存储、检索和处理数据 的可编程电子设备。 要改变计算机对数据的处理,只需要改变 指令 即可。 存储、检索和处理 是计算机能够对数据执行的动作。 6.2 机器语言 计算机 真正执行 的程序设计指令是用 机器语言 编写的指令,这些指令固定在计算机的 硬盘 中。 机器语言(machine language) :由计算机直接使用的 二进制编码指令 构成的语言。 在机器语言中,处理过程中每一个微小的步骤都 必须 被明确地编码。 目前 几乎没有 程序是用 机器语言 编写的,主要是因为编写这种程序 太费时间 。 Pep/8:一台虚拟机 虚拟机(virtual computer(machine)) :为了 模拟 真实机器地重要特征而设计的假想机器。 Pep/8 有 39 个机器语言指令。这意味着每个Pep/8程序一定是由这些指令组合而成的 序列 。 Pep/8反映的 重要特征 : 1.Pep/8的内存单元由 65536 个字节的存储空间构成。这些字节从0到65535( 十进制 )进行编号。 2.Pep/8的 字长 是两字节,或者16比特。这样向算术/逻辑单元(ALU)流入的数据或从 算术/逻辑单元 流出的数据在长度上就是 16比特 。 3.Pep/8有 7 个存储器。 累加器

计算机网络之网络层

送分小仙女□ 提交于 2019-11-30 00:49:08
功能 异构网络互连: 当中继系统是 转发器,网桥或者交换机 时,一般并不称之为网络互连,因为这 仅仅是把一个网络扩大了 ,而这仍然是一个网络。 网络互连通常是指用 路由器 进行 网络互联 和路由选择。 IP数据报的传送:网络地址不变,链路层地址变化 (层次化)(即 源、目的地址不变,而交通工具改变了 ) 路由算法 静态路由算法: 基本概念: 又称 非自适应路由算法 。指由网络管理员手工配置的路由信息。 优点: 简便、可靠 适用性: 大型和复杂 的网络环境通常 不宜采用 静态路由。 在 负荷稳定、拓扑变化不大 的网络中运行效果很好 故仍广泛用于 高度安全的军事系统 和 较小的商业网络 动态路由算法: 基本概念: 又称 自适应路由算法 。值路由器上的路由表项是通过相互连接的路由器之间彼此交换信息,然后按照一定的算法优化出来的,而这些路由信息会在一定时间间隙里不断更新,以适应不断变化的网络,以随时获得最优的寻路效果。 优点: 能改善网络的性能并有助于流量控制 缺点: 算法复杂,会增加网络的负担,有时因对动态变化的反应太快而引起振荡,或反应太慢而影响网络路由的一致性。 距离-向量路由算法 每个结点 仅与它的直接邻居交谈 ,它为它的邻居 提供从自己到网络中所有其它节点的最低费用估计 。 在 距离-向量路由算法 中,所有结点都定期地将它们的整个路由选择表传达给所有与之 直接相邻 的结点。