- 博客(11)
- 收藏
- 关注
原创 数据结构实验四
选择排序,快速排序,归并排序运行时间比较,初始生成随机数为10000,以10000的步长递增来记录运行时间,由于当数据量达到420000时,选择排序运行时间达到接近三分钟,故下面运行结果只展示到数据量达到420000,但已经足以可见,选择排序算法随数据量增大运行时间增长速度远高于快速排序和归并排序,是因为选择排序的时间复杂度为o(n^2),快速排序和归并为o(nlogn)。排序是计算机科学中的常见任务,它将一组无序的数据元素按照某种规则重新排列,以使得数据呈现有序的状态,便于后续的查找、统计和分析等操作。
2024-05-31 15:51:30
773
原创 数据结构实验三
该函数用于求源点0到每个顶点的最短路径,先初始化D,P,S矩阵,之后循环遍历除源点外的所有点,获取到所有未确定最短路径中最短路径的下标,再嵌套循环遍历除源点外的所有点,如果其最短路径未确定,则计算已确定的w的最短路径加上w与j之间边的长度,如果其小于原来的值,则更换,且找到j的最短路径。(1)定义了MTGraph结构体来存储图结构,其成员有vertex一维数组用于存储图的顶点序列,edge二维数组用于存储边的权值,n用于存储顶点数,e用于存储边数。算法,输出源点及其到其他顶点的最短路径长度和最短路径。
2024-05-31 15:48:50
917
原创 数据结构实验二
该函数用于统计文章中出现的各个字符及其出现的次数和总字符种类数,打开passage.txt文件后,先将words数组的每一项结构体中的count成员初始化为零,方便后续统计,先读取一个字符,并保存该字符及对其出现次数统计的count进行递增,当未读取到文件末尾时,每读取一个字符,借助found标志变量,判断该字符是否之前被统计过,如果是,则递增该字符出现次数,否则,存储该字符并递增其出现次数,最后关闭文件。为每个字符的结构体,其中的成员为ch,用于存储字符,count用于存储该字符在文章中出现的次数。
2024-05-31 15:46:36
668
原创 数据结构实验一
用于对按照任意顺序输入的多项式按照指数幂次递降的顺序进行排序,如果待排序链表为空或者只有一项则无需进行排序,设置已排序部分的头结点和待排序部分的当前节点,当待排序链表的当前结点不为空即未排序结束,如果已排序链表头结点为空,即未进行排序或者待排序链表的当前结点指数大于排好序的第一项,这两种情况都需要在排序链表的头部插入该项,否则,找到合适顺序位置再插入。使用结构体来存储每一项,并通过链表形式来存储,结构体成员中定义了系数的分子coef1,分母coef2,指数exp,及指向下一项的指针link。
2024-05-31 15:43:22
948
原创 计算机组成原理大作业
ADD指令的汇编格式为add rd,rs,rt,这实现了32位整数加的操作,加数与被加数分别置于rs和rd寄存器中,最后由ALU运算器计算出结果并存到rd寄存器中。SUB指令的汇编格式为sub rd,rs,rt,这实现了32位整数减的操作,被减数与减数分别置于rs和rd寄存器中,最后由ALU运算器计算出结果并存到rd寄存器中。而对于条件转移而言,Rs和Rt均为源操作数。SW指令的汇编格式为sw rt,offset(rs),这将rt寄存器中的数据存到offset与rs寄存器中数据计算后得到的地址位置处。
2024-05-31 15:33:00
1321
1
原创 计算机系统实验之TinyShell
计算学部目 录第1章 实验基本信息 1.1 实验目的 1.2 实验环境与工具 1.2.1 硬件环境 1.2.2 软件环境 1.2.3 开发工具 1.3 实验预习 第2章 实验预习 2.1 进程的概念、创建和回收方法(5分) 2.2信号的机制、种类(5分) 2.3 信号的发送方法、阻塞方法、处理程序的设置方法(5分) 2.4 什么是shell,简述其功能和处理流程(5分) 第3章 TinyShell的设计与实现
2024-05-31 15:25:37
807
原创 计算机系统实验之Linux下C工具应用
第1章 实验基本信息1.1 实验目的1.2 实验环境与工具1.2.1 硬件环境1.2.2 软件环境1.2.3 开发工具1.3 实验预习第2章 Windows 软硬件系统观察分析2.1 查看计算机基本信息(2分)2.2 设备管理器查看(2分)2.3 隐藏分区与虚拟内存之分页文件查看(2分)2.4 任务管理与资源监视(2分)2.5 计算机硬件详细信息(2分)第3章 Linux软硬件系统观察分析3.1 计算机硬件详细信息(3分)3.2 任务管理与资源监视(3分)
2024-05-31 15:16:03
858
原创 计算机系统实验之优化
一般有用的优化(编译选项-O1、-O2等)代码移动复杂指令简化公共子表达式面向编译器的优化(解决编译器的优化障碍)函数副作用内存别名面向超标量CPU的优化流水线、超线程、多功能部件、分支预测投机执行、乱序执行、多核:分离的循环展开只有保持能够执行该操作的所有功能单元的流水线都是满的,程序才能达到这个操作的吞吐量界限面向向量CPU的优化(MMX/SSE/AVX)CMOVxx,串指令等指令代替test/cmp+jxx,for循环嵌入式汇编。
2024-05-31 15:10:46
1012
原创 计算机系统实验之缓冲区溢出
本次实验如此多的攻击类型都是基于 Get() 函数输入的字符没有限制而导致的溢出并覆盖原来的栈帧,这是危险的一件事。通过这次实验,我对程序运行时栈帧结构的变化有了一个更深入的了解,我也掌握了这个比较基础的缓冲区溢出攻击的方法,为将来的漏洞攻击以及安全维护相关知识的进一步学习打好基础,初步了解到一些黑客是如何进行攻击的,也思考了怎样去避免这种攻击。
2024-05-31 14:59:44
620
原创 计算机系统实验之二进制炸弹
在gdb过程中观察rsp寄存器的值从0x7fffffffddf0到0x7fffff7feff0,就得到以下内容并退出。0x7fffff7feff0是rsp寄存器的栈顶,再超出就会爆栈。接下来分析sum的汇编代码。经过单步调试,可知在进入sum函数时候,rsp寄存器的值会减8来存储返回地址,随后又push %rbp来保存调用者的栈帧基址指针,此时rsp寄存器的值又减8,随后通过sub来使rsp寄存器的值减16,来为当前函数局部变量分配空间,故调用一次sum函数需要减去32个字节。
2024-05-31 14:45:01
580
原创 计算机系统大作业——程序人生
编写完成的hello.c文件(program),首先要经过预处理器cpp生成hello.i文件,此时仍为文本文件;再经过编译器ccl编译生成汇编文件hello.s,此时为机器级语言程序;再经过汇编器处理成一个可重定位目标文件hello.o,此时为二进制文件;最后hello.o以及其他可重定位目标文件在链接器ld作用下生成了可执行目标程序hello。
2024-05-31 14:17:50
325
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人