- 博客(33)
- 收藏
- 关注
原创 数据结构-顺序表
用顺序存储的方式实现线性表顺序存储:把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。
2025-07-11 14:47:22
210
原创 数据结构-线性表
是具有相同数据类型的n(n>=0)个数据元素的有限序列,其中n为表长,当n=0时,线性表是一个空表。若用L命名线性表,则其一般表示为L=(a1,a2,…,ai, ai+1,…,an)概念:创建、销毁、增删改查
2025-07-08 17:10:45
144
原创 数据结构-算法的空间复杂度
无论问题规模怎么变,算法运行所需的内存空间都是固定的常量,算法空间复杂度为S(n)= 0(1)。注:S表示"Space"算法原地工作--算法所需内存空间为常量。空间复杂度=递归调用的深度多项相乘,都保留。
2025-07-08 16:26:48
173
原创 数据结构-算法的时间复杂度
算法效率的度量:时间复杂度、空间复杂度。时间复杂度:T=T(n)事前预估算法时间开销T(n)与问题规模n的关系(T表示“ time)多项相加,只保留最高阶的项,且系数变为1。多项相乘,都保留。
2025-07-08 16:09:15
146
原创 数据结构-算法
程序=数据结构+算法数据结构:如何用数据正确地描述现实世界的问题,并存入计算机。算法:如何高效地处理这些数据,以解决实际问题。是对特定问题求解步骤的一种描述,它是指令的有限序列,其中的每条指令表示一个或多个操作。
2025-07-08 15:47:24
123
原创 数据结构-1
数据:是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中,并被计算机程序识别(例如:二进制0和1)和处理的符号的集合。数据是计算机程序加工的原料。数据元素:是数据的基本单位,通常作为一个整体进行考虑和处理。数据项:一个数据元素由若干数据项组成,数据项是构成数据元素的不可分割的最小单位。数据对象:是具有相同性质的数据元素的集合,是数据的一个子集。数据结构:是相互之间存在的一种或者多种特定关系的数据元素的集合。是一个值的集合和定义在此集合上的一组操作的总称。(1)原子类型:其值不可再分的数据类型。
2025-07-05 19:57:38
258
原创 进程的状态与转换
全部状态:运行、就绪、阻塞、创建、终止基本状态:运行、就绪、阻塞当进程2处于阻塞态时,其他进程进入CPU,进行运行。运行态->就绪态阻塞态->就绪态链接方式中的阻塞队列分类:
2025-06-15 19:37:47
139
原创 进程的概念 组成 特征
进程:是动态的,是程序的一次执行过程。 同一个程序多次执行,会对应多个进程。程序:是静态的,就是个存放在磁盘里的可执行文件,就是一系列指令。PID:当进程被创建时,操作系统会为该进程分配一个唯一的、不重复的“身份证号”。UID:进程所属用户。PCB:进程控制块。以下数据信息被保存在一个数据结构中,即PCB。数据信息:操作系统要记录PID、UID。基本的进程描述信息,可以让操作系统区分各个进程。还要记录给进程分配了哪些资源(如:分配了多少内存、正在使用哪些I/O设备、正在使用哪些文件)。可
2025-05-07 21:21:54
233
原创 关于虚拟机
使用虚拟化技术,将一台物理机器虚拟化为多台虚拟机器(VM),每个虚拟机器都可以独立运行一个操作系统。同术语:虚拟机管理程序,虚拟机监控程序/VMM,Hypervisor。
2025-05-07 21:21:41
187
原创 操作系统体系结构
典型的大内核/宏内核/单内核 操作系统:Linux、UNIX。典型的微内核 操作系统:Windows NT。此章:一定考简单选择题,了解各种体系的特性,了解各自的优缺点。
2025-04-28 20:41:08
176
原创 关于系统调用
1.定义:是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以通过系统调用来请求获得操作系统内核的服务。例子:打印论文时,我在打印,另一个同学也在打印。如果两个进程可以随意地、并发地共享打印机资源,会发生什么情况?两个进程并发运行,打印机设备交替收到两个进程发来的打印请求,结果两个论文地内容混合在了一起。解决方法:由操作系统内核对共享资源进行统一的管理,并向上提供“系统调用”,用户进程想要使用打印机这种共享资源,只能通过系统调用向操作系统内核发出请求
2025-04-27 17:02:35
234
原创 引用的定义和简单使用
引用不是新定义一个变量,而是给已存在变量一个别名,编译器不会为引用变量开辟内存空间;它和它引用的变量共用同一块内存空间。比如:水浒传中,林冲,外号豹子头,实际上是同一个人。和取地址用同一个符号,区别在于放在谁的后面。引用放在类型后面,如 int& ra=a;1.引用和被引用的变量地址是一样的,因为没有开辟新的内存空间。3.引用一旦引用一个实体,再不能引用其他实体。2.一个变量可以有多个引用。1.在定义是必须初始化。2.可以给别名取别名。
2025-04-08 18:52:57
260
原创 const引用
4.临时对象:就是编译器需要一个空间暂存表达式的求值结果时,临时创建的一个未命名的对象,C++中把这个未命名对象叫做临时对象。c++规定临时对象具有常性,所以这里就触发了权限放大,必须要用常引用才可以,如int &rb=d;1.可以引用一个const对象,也可以引用普通对象。引用const对象时,必须使用const引用。3.引用时将结果放入一个临时对象里,如int &rb=d;,d保存在一个临时对象里。2.引用时,对象的访问权限可以缩小,不能放大。
2025-04-07 17:26:30
244
原创 基数排序和桶排序
比较第一个数,进行排到数组后面;之后在数组里面进行排序。适用于:都是两位数或者都是三位数,且是数值较均匀的数。先比较最后一位的数字大小,然后依次向前比较。不适用于:浮点数,负数。
2025-03-20 18:36:36
99
原创 非比较排序(计数排序)
定义:通过计算该数在数组中出现的次数,来把该数重新按照大小进行排序。1.2创建一个新数组count,便于后续存放数的出现次数。2.1将count里面的下标还原为具体数值,下标+min。1.3进行数值的缩小,数值-min,得到对应新数组下标。1.4统计好数在数组中出现的次数,放入count中。时间复杂度:O(N+range)缺点:只适合整数/适合范围集中。2.2将数值按照次数,进行排序。1.计算数在数组中出现的次数。空间范围度:O(range)1.计算数在数组中出现的次数。
2025-03-20 16:26:22
200
原创 快排的缺陷及改良方法
在数组是有序情况下,一般选择keyi时(选择头或尾),在进行快排时,函数一直从头到尾被调用,占用栈,递归太深,导致栈溢出。改良方法:在选择keyi时可以采用随机选择的方法,但随机选择过于随便,有一定风险,所以选择三数取中法,避免有序情况下,效率低下。调用:在主代码中,我们将getMidi的返回值,赋值给midi,再与left交换值,便于后续代码实现。当区间被分到较少数时(例如5个),再采用二分法就过于繁琐,效率降低。(此处的left、right、midi都为数组的下标,并不是数值)
2025-03-12 17:45:26
207
原创 插入排序的概念和具体代码实现
若 < 最后一个元素值,则与前一个元素继续比较大小,直到找到 < 的元素出现。假设一组数组原本是有序的,现在需要往里面插入数值。则需要与数组中的最后一个元素进行比较大小,若 > 最后一个元素值,则保持原位置不动;
2025-03-12 17:31:49
113
原创 简单版本的单趟快排
2.进行排序,从左边出发找>a[keyi]的值,从右边出发找<a[keyi]的值;先从右边开始找,右边找到了之后,再从左边开始找,左边找到了,之后左右两边进行交换。进行交换a[keyi]的值:将begin/end为止的值与a[keyi]值交换。将最左边数的下标设为begin,将最右边数的下标设为end,方便进行数组移动。满足:排完之后,比关键字小的在关键字左边,比关键字大的在关键字右边。4.排完之后,比关键字小的在关键字左边,比关键字大的在关键字右边。若a[end] > a[keyi],则--end。
2025-03-08 18:38:36
316
原创 关于希尔排序
应注意end值的变化,特别是在while(end>=0)的循环之中,end=end-gap此步的变化。设置一个gap,让数组里面的元素进行分组。经过研究表明,gap通常设置为3。首先是红色组,9 5 8 5。1.先进行预排序,让数组接近有序。进行按组去排序,从小到大排序。
2025-02-07 19:57:25
139
原创 二叉树的基本功能代码实现
先创建单个节点和左右子树。5.计算树的叶子节点个数。然后将每个节点相连起来。7.查找等于x值的节点。3.计算树的节点个数。
2025-01-12 21:11:55
189
原创 队列及进队和出队流程
小tips:消息队列可以去了解一下,跟购物,秒杀活动,突然猛增的流量有关系(例如半夜🍑搞活动,人流量突然增多,程序如何处理,就需要用到消息队列),我不太了解,就不说了,以后了解彻底了,再说,欢迎大家发言,消息队列,补充更多知识。再把元素删除,把元素赋值给一个值(如e),即e=q->data[q->front];定义:简称队,又叫先进先出表,是一种操作受限的线性表,限制为 仅允许在表的一端进行插入操作,在表的另一端进行删除操作。出队(离队):从队列中删除元素,删除之后,其后继元素成为队首元素。
2024-04-11 22:30:32
796
1
原创 栈中的中缀表达式转变为后缀表达式
解:先把a放在postexp中,然后+入栈,(①入栈,(②入栈,b放在postexp中,*入栈,c放在postexp中。-的优先级低于*,所以*退出来,放入postexp中,-入栈,d放在postexp中,遇到①)退出-。/入栈,e放在postexp中,+入栈,f放在postexp中,*优先级高于+,直接入栈,g放在postexp中,/入栈,h放在postexp中,遇到②),退出②中所有运算符,+入栈,i放在postexp,/入栈,j放在postexp中,完毕,退栈。例如1+2*3,1*6-4。
2024-04-10 23:46:23
402
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅