961
文章平均质量分 94
iioSnail
求职:Java,工作地:上海,有意请私信
展开
-
复旦大学-961-自主命题-考研学习笔记-数据结构-软件工程-计算机系统
数据结构第二章 树第二章-树(1)基本概念和术语;树的性质;树的定义;树的遍历第二章-树(2)-二叉树的遍历,普通树与二叉树的转换第二章-树(3)-树的存储结构、标准形式第二章-树(4)-完全树的数组存储形式第二章-树(5)-哈夫曼(Huffman)树的定义与应用第三章 查找第三章-查找(1)-查找的基本概念;对线性关系结构的查找,顺序查找,二分查找第三章-查找(2)-Hash查找法,常见的Hash函数,hash冲突的概念,解决冲突的方法(开散列方法/拉...第三章-查找(3)-BST树原创 2020-12-27 22:41:02 · 5372 阅读 · 8 评论 -
复旦大学961-数据结构-第三章-查找(2)-Hash查找法,常见的Hash函数,hash冲突的概念,解决冲突的方法(开散列方法/拉链法,闭散 列方法/开址定址法),二次聚集现现象
961全部内容链接文章目录Hash查找法Hash表是什么?Hash表的基本原理常见的Hash函数1. 直接定址法2. 除留余数法3. 数字分析法4. 平方取中法Hash冲突的概念解决冲突的方法1. 开放定址法1.1 线性探测法1.2 平方探测法1.3 再散列法1.4 伪随机法2.拉链法二次聚集现象Hash查找法Hash表是什么?Hash表也叫散列表,就是一组数据集合,像List一样,就是存储一组数据,但是它有自己独特的方式。比如在Java中,HashSet与ArrayList一样,都是Collect原创 2020-12-27 22:43:33 · 821 阅读 · 0 评论 -
复旦大学961-计算机系统基础-第五章-系统系I/O和网络编程
I/O相关概念《王道2021组原》 P283I/O即输入/输出,输入/输出是以主机为中心而言的,将信息从外部设备传送到主机上称为输入,反之称为输出。I/O系统中的几个基本概念如下:外部设备:包括输入/输出设备和通过输入/输出接口才能访问的外存储设备。接口:在各个外设与主机之间传输数据时进行各种协调工作的逻辑部件。输入设备:用于向计算机系统输入命令和文本、数据等信息的部件。键盘和鼠标是最基本的输入设备。输出设备:用于将计算机系统中的信息输出到计算机外部进行显示、交换等的部件。显示器和打印机是最原创 2020-12-27 22:48:49 · 480 阅读 · 0 评论 -
复旦大学961-计算机系统基础-第四章-链接、进程及并发编程
静态链接目标文件符号和符号表重定位和加载动态链接库异常和进程进程控制和信号进程间的通信进程间信号量的控制信号量各种并发编程模式共享变量和线程同步其他并行问题原创 2020-12-27 22:48:36 · 512 阅读 · 0 评论 -
复旦大学961-计算机系统基础-第三章-存储器结构及虚拟存储器
局部性《CSAPP》P418一个编写良好的计算机程序常常具有良好的局部性(locality)。也就是,它们倾向于引用邻近与其他最近引用过的数据项的数据项。或者最近引用过的数据项本身。这种倾向被称为局部性原理(principle of locality)。局部性通常有两种不同的形式(《王道2021操作系统》P194):时间局部性(temporal locality):程序中的某条指令一旦执行,不久后该指令可能再次执行,某数据被访问过,不久后该数据可能再次被访问。产生时间局部性的典型原因是程序中存在着原创 2020-12-27 22:48:23 · 512 阅读 · 0 评论 -
复旦大学961-计算机系统基础-第二章-优化程序性能
优化程序性能《CSAPP》P341选择合适的算法和数据结构编写出编译器能够有效优化以转换成高效可执行代码的源代码消除不必要的功能,让代码尽可能有效地执行所期望的任务。如不必要的函数调用,条件测试和内存引用。优化编译器的能力和局限性以及表示程序性能《CSAPP》P342特定体系结构或应用特性的性能优化限制因素确认和消除性能瓶颈...原创 2020-12-27 22:48:10 · 911 阅读 · 2 评论 -
复旦大学961-计算机系统基础-第一章-处理器体系基础
CPU中的时序电路TODO单周期处理器的设计王道2021《组原》P206单指令周期:对所有指令都选用相同的执行时间来完成,称为单指令周期方案。此时每条指令都在固定的时钟周期内完成,指令之间串行执行,即下一条指令只能在前一条指令执行结束后才能启动。因此,指令周期取决于执行时间最长的指令的执行时间。对于那些本来可以在更短时间内完成的指令,要使用这个较长的周期来完成,会降低整个系统的运行速度。流水线处理器的基本原理王道2021《组原》P206流水线方案:指令之间可以并行执行的方案,称为流水线方案,其原创 2020-12-27 22:47:50 · 439 阅读 · 0 评论 -
复旦大学961-软件工程-第四章-软件测试
软件测试及测试用例的概念软件测试的目的:软件测试是一个为了发现错误而执行程序的过程一个好的测试用例是指很可能找到迄今为至尚未发现的错误的测试用例一个成功的测试是指揭示了迄今为至尚未发现的错误的测试软件测试的重要原则:所有的测试都应可追溯到客户需求,即输入和输出满足客户的需求应该在测试工作真正开始前的较长时间就进行测试计划Pareto原则:测试中发现的80%的错误可能来自于20%的程序代码测试应从“小规模”开始,逐步转向“大规模”穷举测试是不可能的为了达到最有效的测试,应由独立的第原创 2020-12-27 22:47:36 · 638 阅读 · 0 评论 -
复旦大学961-软件工程-第三章-软件设计与构造
软件体系结构及体系结构风格的概念设计模式的概念模块化设计的基本思想及概念抽象分解模块化封装信息隐藏功能独立软件重构的概念软件体系结构的UML建模包图类图构件图顺序图部署图接口的概念面向对象设计原则开闭原则Liskov替换原则依赖转置原则接口隔离原则内聚与耦合的概念常见的内聚与耦合类型...原创 2020-12-27 22:47:28 · 575 阅读 · 0 评论 -
复旦大学961-软件工程-第二章-软件需求
软件需求的概念需求工程定义为“直到(但不包括)把软件分解为实际架构构建之前的所有活动”。软件需求包括:功能需求、性能需求、用户或人的因素、环境需求、界面需求、文档需求、数据需求、资源使用需求、安全保密需求、可靠性需求、软件成本消耗与开发进度需求、其他非功能性需求。需求工程的基本过程需求工程分为六个阶段:需求获取:①系统分析人员通过与用户的交流、对现有系统的观察及对任务进行分析,确定系统或产品范围的限制性描述、与系统或产品有关的人员及特征列表、系统的技术环境的描述、系统功能的列表及应用于每个需求的原创 2020-12-27 22:47:13 · 518 阅读 · 0 评论 -
软件工程-分层数据流图的画法
本文来源于《软件工程(第三版)》清华大学出版社 钱乐秋 一书的总结。分层数据流模型结构化分析方法主要思想:抽象与自顶向下的逐层分解。抽象:忽略一个问题中与当前目标无关的那些方面,以便更充分地关注与当前目标有关的方面分解:将问题不断分解为较小的问题,直到每个最底层的问题都足够简单为止数据流图Data Flow Diagram(简称DFD):描述输入数据流到输出数据流的变换(即加工)过程,用于对系统的功能建模,基本元素包括:数据流图示例:数据流图的扩充符号描述一个加工的多个数据流之间原创 2020-10-26 14:35:49 · 41692 阅读 · 3 评论 -
复旦大学961-数据结构-第五章-图(五)拓扑排序
拓扑排序AOV网AOE网基本概念求关键路径的代码实现拓扑排序原创 2020-12-27 22:46:44 · 730 阅读 · 0 评论 -
复旦大学961-软件工程-第一章-软件过程
一、概论1.1 计算机软件1.1.1 软件的发展软件发展的三个阶段阶段编程语言特点第一阶段汇编语言①无软件。②质量衡量标准:运行时间省、占用内存小第二阶段高级程序设计语言①出现了应用软件。②个体转向合作。③缺乏工程化指导,导致软件危机第三阶段面向对象编程语言①提出了软件工程。 ②个体合作转向工程方式1.1.3 软件的分类系统软件:操作系统,编译软件支撑软件:数据库,网络软件,IDE应用软件:英雄联盟1.1.4 软件语言需求定义语言:原创 2020-12-27 22:46:59 · 671 阅读 · 1 评论 -
复旦大学961-数据结构-第五章-图(四)最短路径问题,Dijkstra算法,Floyd算法
最短路径的概念带全路径长度:带全图中,一个节点u到另一个节点v所经过的边的权值之和称为带权路径长度。一个带全图中,节点u到节点v有许多路径,其中权值之和最短的那一条称为最短路径。当然最短路径也可以针对无向图,比如利用BSF算法中求出节点的单源最短路径。单源最短路径:就是求一个节点到所有其他节点的最短路径。Dijkstra算法就是干这个的。每队顶点间的最短路径:使用Floyd算法解决。...原创 2020-12-27 22:46:31 · 773 阅读 · 0 评论 -
复旦大学961-数据结构-第五章-图(三)最小生成树基本概念,Prim算法,Kruskal算法
最小生成树的概念首先,最小生成树是针对①连通图和②带全图的。生成树就是对一个连通图砍掉一些边,然后将这个图变成一个树。而最小生成树(Minimum-Spanning-Tree,MST)就是,如何砍边,然后能让这棵树的权值最小。最小生成树具有以下特点:最小生成树不唯一。一个图可以可能对应多个最小生成树最小生成树的权值唯一。虽然树不唯一,当是他们的权值一定是唯一的,且是最小的。最小生成树的边数等于顶点数减1。这是树的性质带全图ADT及其实现public interface WeightedGr原创 2020-12-27 22:46:09 · 389 阅读 · 0 评论 -
复旦大学961-数据结构-第五章-图(二)图的遍历,广度度优先遍历和深度优先遍历
图的遍历广度优先遍历广度优先搜索(Breadth-First-Search,BFS)类似于树中的层序遍历。基本思想为:1.首先访问起始顶点v,然后依次访问顶点v的邻接顶点w1,w2,⋯ ,wi2.访问w1顶点的邻接顶点w11,w12,⋯3.访问w2顶点的邻接顶点4.依次循环下去,直到该连通分量的顶点全部访问完毕。5.若还存在其他未访问的顶点(其他未访问的连通分量),则重复1,2,3,4,直到所有节点都被访问\begin{aligned}& 1. 首先访问起始顶点v,然后依次访问顶点v的邻接原创 2020-12-27 22:45:59 · 334 阅读 · 1 评论 -
复旦大学961-数据结构-第五章-图(一)图的基本概念;图的存储结构,邻接矩阵,邻接表
图的基本概念图的定义图的分类1. 有向图2.无向图3. 简单图4. 多重图5. 完全图(也称为简单完全图)6. 子图7. 连通、连通图和连通分量8.强连通图、强连通分量9. 生成树、生成森林10. 顶点的度、入度和出度11. 边的权和网12. 稠密图和稀疏图13.路径、路径长度和回路14. 简单路径、简单回路15. 距离16. 有向树图的存储结构图的ADT图的表示方法邻接矩阵无向图的Java实现邻接表原创 2020-12-27 22:45:26 · 517 阅读 · 0 评论 -
复旦大学961-数据结构-第四章-排序(三)合并排序,基数排序;排序算法复杂度总结
合并排序(归并排序)归并排序与快速排序都是基于分治(分而治之)思想。基本思想为:将数组分为两部分,然后分别对这两部分进行排序,然后再将其合并。而对于这两部分的排序,也是用归并排序递归进行。关键在于如何合并(Merge)。基本思想为:申请有一个数组,这个数组的大小是两个要合并数组的总和,然后依次对比这两个数组中的元素,然后填充到新数组中。例如:数组A13579↑(i)数组B246810↑(j)合并之后1原创 2020-12-27 22:45:13 · 412 阅读 · 1 评论 -
复旦大学961-数据结构-第四章-排序(二)冒泡排序,快速排序; 选择排序,堆排序
交换排序冒泡排序快速排序选择排序简单选择排序堆排序原创 2020-12-27 22:44:55 · 439 阅读 · 0 评论 -
复旦大学961-数据结构-第四章-排序(一)排序的基本概念;插入排序,希尔排序
排序的基本概念排序,就是重新排列列表中的元素,使表中的元素满足按关键字有序的过程。排序算法分为两种,稳定的和不稳定的,假设有下列一串数据:7,2,8,4,9,8。该数据中有两个8,这里使用粗细来标记。对于稳定的排序,排序后的结果中两个8不会互换位置,即2,4,7,8,8,9。 但是对于不稳定的排序,排序之后,两个8的顺序就“有可能”发生变化,如2,4,7,8,8,9根据数据是否全部存放于内存,还可以把排序分为两种:内部排序:内部排序指的是要排序的数据比较小,可以直接全部存放于内存中外部排序:相对原创 2020-12-27 22:44:40 · 312 阅读 · 0 评论 -
复旦大学961-数据结构-第三章-查找(5)优先队列与堆,堆的定义,堆的生成,调整算法;范围查询
优先队列的概念堆的定义堆的ADT定义堆的具体实现堆的插入和上滤调整算法堆的删除和下滤调整算法堆的生成范围查询完整代码原创 2020-12-27 22:44:06 · 319 阅读 · 0 评论 -
复旦大学961-数据结构-第三章-查找(4)平衡树(AVL)的定义,性质,ADT及其实现,平衡树查找,插入算法,平衡因子的概念
平衡二叉树(AVL)的定义在上一节中,提到了BST(二叉排序树),它的最坏查找时间复杂度为O(n)。若插入顺序是有序的,就会产生这种现象。为了解决这个问题,所以引出了平衡树。平衡树也是一棵BST,只不过它有更多的约束条件。即每个节点的左右子树的高度不能差太多。即一棵二叉排序树,若该树的所有节点的左子树和右子树的高度之差不超过1,则该树称为平衡二叉树,简称平衡树,又称AVL树(AVL是发明人名字的字母缩写),也称BT(Balanced Binary Tree)。其中左右子树的高度之差称为平衡因子。 在平原创 2020-12-27 22:44:18 · 337 阅读 · 1 评论 -
复旦大学961-数据结构-第三章-查找(3)-BST树定义,性质,ADT及其实现,BST树查找,插入,删除算法
BST树定义BST(Binary Search Tree),又称二叉排序树,二叉查找树,二叉搜索树。其特点为:根节点的左子树的所有元素必须小于根节点。右子树上的元素必须大于根节点。从根节点下的所有子树也都要满足1。例如,如图所示:该树为一棵BST,将其中序遍历就是一个有序数列:1,3,4,5,6,8,10,13,14BST的性质性质基本上就是定义中的那些。BST的时间复杂度平均查找时间复杂度为O(log n)最坏的时间复杂度为O(n),例如这样一棵树。BST的ADT及其实现原创 2020-12-27 22:43:51 · 791 阅读 · 0 评论 -
复旦大学961-数据结构-第三章-查找(1)-查找的基本概念;对线性关系结构的查找,顺序查找,二分查找
查找的基本概念查找:从一组数据集合中找出符合要求的数据,这个过程称为查找,有两种情况,查找成功和查找失败查找表:用于查找的数据集合称为查找表,由同一种数据类型组成。可以是数组或链表等数据类型。一般包括四种操作:增删改查。静态查找表:如果对于一个表,只对该查找表进行查找操作,则称为静态查找表。若对该表进行增删改操作,则该表称为动态查找表关键字:数据元素中唯一表示该数据的项的值。使用基于关键字的查找,查找结果应该是唯一的(其实可以不唯一,但只能返回一个),如学生表中的学号。平均查找长度:在查找过程中原创 2020-12-27 22:42:58 · 396 阅读 · 0 评论 -
复旦大学961-数据结构-第二章-树(5)-哈夫曼(Huffman)树的定义与应用
哈夫曼(Huffman)树的定义对于树的每个"叶节点",都赋予一个权值w。如图用它的权值乘以它的深度减1(从根节点到该节点所经过的边数),称为该节点的带权路径长度。 整个树的每个叶节点的带权路径长度之和,称为树的带权路径长度,公式如下:WPL=∑i=1nwili (wi为第i个节点的权值,li为其路径长度) WPL = \sum_{i=1}^n w_i l_i ~~~~(w_i为第i个节点的权值,l_i为其路径长度)WPL=i=1∑nwili原创 2020-12-27 22:42:44 · 418 阅读 · 0 评论 -
复旦大学961-数据结构-第二章-树(4)-完全树的数组存储形式
完全二叉树的数组表示形式完全二叉树的Java定义public class CompleteBinaryTree { private final static int MAX_SIZE = 100; Object[] elements = new Object[MAX_SIZE];}完全二叉树的前序遍历(非递归)public static void preOrder(CompleteBinaryTree tree) { Object[] elements = tree.e原创 2020-12-27 22:42:29 · 426 阅读 · 1 评论 -
复旦大学961-数据结构-第二章-树(3)-树的存储结构、标准形式
二叉树的存储结构顺序存储结构二叉树的顺序存储是指用一组连续的存储单元依次自上而下,自左而右存储完全二叉树上的节点元素,即完全二叉树上编号为i的节点元素存储在一维数组下标为i-1的分量中。链式存储结构由于顺序存储的空间利用率较低,因此二叉树一般采用链式存储结构。一般包含三个域:数据域element,左指针域left,右指针right:public class BinaryNode<AnyType> { public AnyType element; public Bin原创 2020-12-27 22:42:14 · 416 阅读 · 0 评论 -
复旦大学961-数据结构-第二章-树(2)-二叉树的遍历,普通树与二叉树的转换
二叉树及其性质二叉树的定义二叉树的定义:每个节点至多有两棵子树,即二叉树中不存在度大于2的节点二叉树是有序树,即左右子树不能颠倒几种特殊的二叉树满二叉树:一棵高度为 2h−1 2^h-1 2h−1 个节点的二叉树,称为满二叉树。就是说,除了最有一层,其他层的节点的度必须都为2。说白了就是把二叉树画满。完全二叉树:相对于满二叉树而言,没那么满,少了几个节点(只能最后几个节点少)的二叉树,为完全二叉树。二叉排序树:左子树的所有节点的关键字均小于根节点关键字,右子树的所有关键字均大于原创 2020-12-27 22:42:00 · 383 阅读 · 0 评论 -
复旦大学961-数据结构-第二章-树(1)基本概念和术语;树的性质;树的定义;树的遍历
基本概念和术语树:树是n个节点的有限集合空树:n=0时(一个节点都没有),称为空树。根:树最上层的那个节点称为根子树:从树中抽取一个集合,该集合仍是一棵树,则这个树称为该树的子树树的高度(或深度):从根节点算起,树的层数就是树的高度树的节点关系:祖先:从根A到节点K的唯一路径上的任意节点,称为节点K的祖先子孙:若节点K是节点B的祖先,那节点B称为节点K的子孙双亲:父节点。孩子:子节点兄弟:有相同双亲的节点称为兄弟节点的度:一个节点的孩子个数称为该节点的度。树的度:树中节点的原创 2020-12-27 22:41:38 · 491 阅读 · 1 评论