自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 收藏
  • 关注

原创 数据结构-排序-排序的七种算法(2)

重复遍历列表,比较相邻元素,如果顺序错误就交换它们最好:O(n)(已有序时)平均:O(n²)最坏:O(n²):O(1):稳定实现简单对部分有序数据效率较高每轮将最大元素"冒泡"到末尾。

2025-06-01 14:55:49 1108

原创 数据结构-排序(1)

给定一个包含n个元素的序列和一个关键码Ki(通常是记录Ri的一个属性),排序的目标是找到一个排列,使得关键码序列满足一个特定的或关系。就是把一堆杂乱无章的数据,按照某种规则(比如数字大小、字母顺序、日期先后)排列整齐的过程。

2025-05-28 21:10:51 1082

原创 数据结构-查找(1)

适用于数据频繁变动的场景,通过动态平衡结构(如AVL树、B+树)维护操作效率。:平均 𝑂(log⁡log⁡𝑛)O(loglogn),最坏 𝑂(𝑛)O(n)。:平均 𝑂(log⁡𝑛)O(logn),最坏 𝑂(𝑛)O(n)(退化为链表)。:适用于数据固定的场景,以预处理(如排序)换取高效查询,典型方法为二分查找。:平均 𝑂(1)O(1),最坏 𝑂(𝑛)O(n)(冲突严重时)。)采用哈希表,支持平均 𝑂(1)O(1) 的查找。:严格 𝑂(log⁡𝑛)O(logn)。:是否依赖数据结构的

2025-05-26 21:31:58 901

原创 数据结构-树(2)

二叉树是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两颗互不相交的,分别称为根结点的左子树和右子树的二叉树组合。 如图: 特点:每个结点最多 2 子树,区分左右顺序如下思维导图:性质一:第 i 层最多 2^(i-1) 个结点(i≥1)性质二:深度为 k 的二叉树最多 2^k-1 个结点。性质三:终端结点数 n₀ = 度为 2 的结点数 n₂ + 1(n₀ = n₂ + 1)。终端结点数 n₀ = 度为 2

2025-05-12 15:29:02 1165

原创 数据结构-树(1)

其中 data 是数据域,frstchikd 为指针域,存储该结点的第一个孩子结点的存储地址,rightsib是指针域,存储该结点的右兄弟结点的存储地址。这种方法克服了浪费空间的缺点,对空间利用率是很高的,但是由于各个结点的链表是不相同的结构,加上要维护结点的度的 数值,在运算上就会带来时间上的损耗。任一棵树,它的结点的第一个孩子如果存在就是唯一的,它的右兄弟如果存在也是唯一的。这种方法对于树中的各个结点的度相差很大时,显然是很浪费空间的,因为有很多的结点,它的指针域是空的。每个结点有多个指针域,其中。

2025-05-12 11:32:15 1155

原创 数据结构之串

定义:串是由零个或多个字符组成的有限序列,记作 s="a1​a2​…an​",例如 "data structure"、"123" 等。空串:无任何字符,长度为 0,用""表示,例如短信内容为空时即为空串。空格串:由一个或多个空格组成,有长度,例如 " "(3 个空格)。子串与主串:子串是主串中连续字符序列。生活实例:回文诗 “上海自来水来自海上” 是一个串,其正读和反读相同,体现了串的逆序特性;英文单词 “friend” 中,“end” 是子串,“friend” 是主串。

2025-05-08 17:16:30 1141

原创 数据结构之栈与队列

栈:队列:plaintext 队列: plaintext 4、典型应用场景 场景 栈的应用 队列的应用 函数调用 存储函数调用的参数、返回地址(系统栈自动管理)。 无直接应用,函数调用本质是栈结构。 表达式处理 后缀表达式求值、中缀转后缀(处理运算符优先级)。 无相关应用。 括号匹配 检测括号是否正确嵌套(如)。 无相关应用。 任务调度

2025-05-07 21:39:50 2092

原创 数据结构的基本概念以及算法的基本内容

数学模型及其操作的集合,与具体实现无关。

2025-05-03 17:59:57 1224

原创 总结C++中的STL

STL 即标准模板库,是 C++ 标准程序库的重要组成部分,包含常用数据结构和算法,体现了泛型化程序设计思想,基于模板实现,提高了代码的可复用性 2. deque 特性:双端队列,由多个固定大小的数组块组成,支持在两端快速插入和删除元素,同时也支持随机访问。 优缺点:优点是在两端插入和删除元素的时间复杂度为常数,适合需要频繁在两端操作的场景。缺点是随机访问的效率略低于 。 常用操作: 3. list 特性:双向链表,每个节点包含数据和指

2025-05-01 21:55:55 1082

原创 C语言中结构体的字节对齐的应用

字节对齐通过优化内存布局,平衡性能与空间效率。关键点:默认对齐规则由成员类型和编译器设置决定。调整成员顺序是最简单的优化手段。显式控制对齐适用于特殊场景(如硬件访问、协议定义)。跨平台开发需谨慎处理对齐差异。

2025-04-26 16:35:47 1567

原创 C语言里位操作的应用

右移有符号数的行为(算术右移还是逻辑右移)可能因编译器而异。:过度使用位操作会降低代码可读性,需添加详细注释。:嵌入式设备、内存敏感场景(如 IoT 设备)。:需要极致优化的代码(如图形处理、网络协议栈)。:移位操作超出变量范围会导致未定义行为(例如。:将多个小整数打包到单个变量中。:替代部分数学运算或逻辑判断。在32位整型中是合法的,但。:控制寄存器、操作外设。

2025-04-25 15:41:11 707

原创 FOC原理总结(从电机原理到功能实现)

电机旋转的本质是通过。

2025-04-11 16:47:46 1798

原创 IIC,SPI详细内容以及它们与串口通信的区别

双向数据线,用于传输数据。:时钟线,由主设备控制,同步数据传输。所有设备共享 SDA 和 SCL,通过区分设备。总线需外接(通常 4.7kΩ),以保证信号在空闲时为高电平。

2025-04-06 14:47:14 2140

原创 Modbus通信协议基础知识总结及应用

通过功能码+偏移量定位数据,长地址兼容全范围,短地址简化配置。

2025-03-18 21:23:32 2498

原创 定时器TIM输出比较及其应用

在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速等领域 PWM参数:频率 = 1 / TS 占空比 = TON / TS 分辨率 = 占空比变化步距//配置输出比较单元//配置强制输出波形函数//配置CCR寄存器的预装功能,即影子寄存器,就是写入的值不会立即生效,而是在更新事件才会生效//配置快速使能//外部事件时清除REF信号。

2024-10-06 00:08:00 1681

原创 stm32定时器中断和外部中断

在stm32中,用来统一分配中断优先级和管理中断的EXTI可以监测指定GPIO口的电平信号,当其指定的GPIO口产生电平变化时,EXTI将立即向NVIC发出中断申请,经过NVIC裁决后即可中断CPU主程序,使CPU执行EXTI对应的中断程序支持的触发方式:上升沿/下降沿/双边沿/软件触发支持的GPIO口:所有GPIO口,但相同的Pin不能同时触发中断(即不能PA1和PB1组合)通道数:16个GPIO_Pin,外加PVD输出、RTC闹钟、USB唤醒、以太网唤醒触发响应方式:中断响应/事件响应。

2024-10-05 16:06:58 3097

原创 PWR电源控制

其中PDDS==0,进入停机模式,PDDS==1,进入待机模式//恢复初省配置//后备访问//使能PVD功能//配置PVD的阈值电压//唤醒使能//进入停止模式//进入待机模式//标志位。

2024-10-02 22:34:48 1278

原创 时间戳知识点+stm32实时时钟代码编写

stm32入门教程笔记--读写备份寄存器&实时时钟

2024-10-02 16:01:33 1934

原创 C语言100题练习打卡(2)

例如:输入90,打印出90=2*3*3*5。

2024-04-16 17:51:19 823 1

原创 C语言100道练习题打卡(1)

题目:一只青蛙要从第一级台阶开始,每次可以跳上一级或者两级,直到跳完所有的台阶。2)利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;例如:153是一个水仙花数,因为153 = 1的三次方+5的三次方+3的三次方。5)60万到100万之间时,高于60万元的部分,可提成1.5%;3)20万到40万之间时,高于20万元的部分,可提成5%;4)40万到60万之间时高于40万元的部分,可提成3%;6)高于100万元时,超过100万元的部分按1%提成。

2024-04-14 23:34:02 1739 7

原创 STL函数对象

函数对象(仿函数)是,不是一个函数。

2024-04-13 12:11:29 1222

原创 c++之STL案例分析---员工分组

1,在主函数中创建map容器,将员工部门编号作为key,具体员工作为value,放入到multimap容。3.在createWorker(vWorker)封装创建员工的函数谝历vector容器。1,在主函数中创建显示分组员工的函数。2,将员工分组的函数进行封装。

2024-04-11 12:52:25 619

原创 STL容器

set<T> st;//返回容器中元素的数目。//返回容器中元素的数目。//判断容器是否为空。//判断容器是否为空。//交换两个集合容器。//交换两个集合容器。总结:利用仿函数可以指定set容器的排序规则。统计set容器大小及交换set容器。功能描述:创建set容器以及赋值。set容器进行插入数据和删除数据。示例二:set存放自定义数据类型。利用仿函数,可以改变排序规则。示例1:set放置内置数据。

2024-04-07 01:00:34 1408 1

原创 STL容器(3)

stack是一种的数据结构,它只有一个出口。

2024-04-06 12:30:36 1065

原创 STL容器(3)--deque+案例--评委打分

/删除[beg,end]区间的数据,返回下一个数据的位置。//在pos位置插入一个elem元素的拷贝,返回新数据位置。//在pos位置插入[beg,end]区间的数据,无返回值。//删除pos位置的数据,返回下一个数据的位置。//在pos位置插入n个elem元素,无返回值。//清空容器中所有的数据。//返回索引的idx所指的数据。//返回容器中最后一个数据元素。//返回索引的idx所指的数据。//在容器头部插入一个数据。

2024-04-05 10:40:55 823

原创 STL常用容器(2)---vector容器

/将v[begin(),end()]区间中的元素拷贝给元素。//如果容器变短,则末尾超出容器长度的元素被删除。//如果容器变短,则末尾超出容器长度的元素被删除。//重新指定容器的长度为num,若容器变长,则以默认值填充新位置。//容器预留len个元素长度,预留位置不初始化,元素不可访问。//返回容器中元素的个数。//返回容器中最后一个数据元素。解释:未预留空间时,可访问的元素较多,预留空间后,该空间的元素不可访问,可访问的元素会变少。

2024-04-04 11:03:08 1079

原创 STL常用容器(1)--string容器

/从pos位置查找s的前n个字符第一次位置。

2024-04-04 09:00:25 1263

原创 C++提高编程之STL初始

学习目标:vector中存放自定义数据类型,并打印输出1,存放对象//vector存放自定义数据类型public:int m_age;//向容器中添加数据//遍历数据it!= v.end();it++)cout

2024-04-02 00:24:45 1376

原创 C++之模板

template。

2024-03-16 23:23:42 1087

原创 C++之职工管理系统

职工管理系统可以用来管理公司内所有员工的信息主要利用C++来实现一个基于多态的职工管理系统公司中职工分为三类:普通员工、经理、老板,显示信息时,需要显示职工编号、职工姓名、职工岗位、以及职责。管理系统中需要实现的功能如下:退出管理程序:退出当前管理系统增加职工信息:实现批量添加职工功能,将信息录入到文件中,职工信息为:职工编号、姓名、部门编号显示职工信息:显示公司内部所有职工的信息删除离职职工:按照编号删除指定的职工修改职工信息:按照编号修改职工个人信息。

2024-03-14 21:26:15 1883 2

原创 C++之多态以及文件处理

重写:函数返回值类型 函数名 参数列表 完全一致称为重写。

2024-03-12 16:42:01 1236

原创 C++之继承

问题:当子类与父类出现同名的成员,如何通过子类对象,访问到子类或父类中同名的数据呢?总结:同名静态成员处理方式和非静态处理方式一样,只不过有两种访问方式。class 子类 :继承方式 父类1, 继承方式 父类2...子类继承父类后,当创建子类对象,也会调用父类的构造函数。问题:继承中同名的静态成员在子类对象上如何进行访问?从基类继承过来的表现其共性,而新增的成员体现其个性。一类是从 基类继承过来的,一类是自己增加的成员。问题:父类和子类的构造和析构顺序是谁先谁后?输入cd+空格 然后复制新目录。

2024-03-11 23:55:45 851

原创 C++之对象模型和this 指针,友元,和运算符重载

this指针指向被调用的成员函数所属的对象c++通过提供特殊的对象指针,this指针,解决上述问题。在程序里,有些私有属性 也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术。每一个非静态成员函数只会诞生一份函数实例,也就是说多个同类型的对象会共用一块代码。客厅所有来的客人都可以进去,但是你的卧室是私有的,也就是说只有你能进去。生活中你的家有客厅(Public),有你的卧室(Private)作用:重载关系运算符,可以让两个自定义类型对象进行对比操作。但是呢,你也可以允许你的好闺蜜好基友进去。

2024-03-11 00:33:02 1050

原创 C++之类(一)

优点1:将所有的成员属性设置为私有,可以自己控制读写权限优点2:对于写权限,我们可以检测数据的有效性//优点1:将所有的成员属性设置为私有,可以自己控制读写权限//优点2:对于写权限,我们可以检测数据的有效性//人类public://设置名字//获取姓名//获取年龄cout << "年龄输入有误,请重新输入" << endl;private://姓名 可读可写//年龄 只读 也可以写年龄//偶像 只写int main()Person p;//设置姓名。

2024-03-07 21:25:06 1278

原创 C++核心编程之内存分区模型,引用,函数提高

1.2 程序运行后。

2024-03-05 17:32:12 887

原创 C++之结构体以及通讯录管理系统

语法:struct 结构体名{ 结构体成员列表};通过结构体创建变量的方式有三种:1,struct 结构体名 { 结构体成员列表 }//1,创建学生数据类型:包括姓名,年龄,成绩//自定义数据类型,一些类型集合组成一个类型//成员列表//姓名//年龄int age;//成绩char score;int main()//2,通过学生类型创建具体学生//给s1赋值,通过“.”访问结构体变量中的属性s1.name = "张三";

2024-03-03 22:48:34 1138

原创 c++之通讯录管理系统

通讯录是一个记录亲人,好友信息的工具系统中需要实现的功能如下:1,添加联系人:向通讯录中添加新人,信息包括(姓名,性别,年龄,联系电话,家庭住址)最多记录1000个人2,显示联系人:显示通讯录中所有的联系人信息3,删除联系人:按照姓名进行删除指定联系人4,查找联系人:按照姓名查找指定联系人信息5,修改联系人:按照名字重新修改指定联系人6,清空联系人:清空通讯录所有信息7,退出通讯录:退出当前使用的通讯录。

2024-03-03 22:43:52 1299

原创 C++之函数,指针

函数的定义一般有五个步骤:1,返回值类型2,函数名3,参数列表4,函数体语句5,return表达式语法:返回值类型 函数名 (参数列表)函数体语句;return 表达式;举例://函数的定义//加法函数,实现两个征信相加,并且将相加的结果返回int add(int num1, int num2)//定义中的num1,num2称为形参return sum;指针变量的定义语法:数据类型 * 变量名int main()//1,定义指针int a = 10;

2024-03-02 12:04:50 1055 1

原创 C++之数组

1,数据类型 数组名【数组长度】;2,数据类型 数组名[数组长度] = {值1,值2....}3,数据类型 数组名[ ] = {值1,值2};示例一:int main()//1,数据类型 数组名[ 数组长度 ]int arr[5];//给数组每个元素赋值//访问数据元素return 0;int main()//2,数据类型 数组名[数组长度] = {值1,值2....};i < 5;int main()

2024-02-29 18:31:55 1395 1

原创 c++之运算符,程序流程结构

总结:与if语句相比,对于多条件判断时,switch的结构清晰,执行效率高,缺点是switch不可以判断区间。注意:与while的区别在于do...while会先执行一次循环语句,再判断循环条件。解释:如果标记的名称存在,执行到goto语句时,会跳转到标记的位置。出现在switch条件语句中,作用是终止case并跳出循环。作用:在循环体中再嵌套一层循环,解决一些实际问题。出现在嵌套语句,作用是跳出最近的内层循环语句。出现在循环语句中,作用是跳出当前的循环语句。作用:满足循环条件,执行循环语句。

2024-02-29 13:09:02 1186 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除