- 博客(48)
- 收藏
- 关注
原创 二叉树算法算法【二叉树的创建、插入、删除、查找】
(1)删除度为0的节点,就是最后的叶子节点,直接删除就可以了.(2)删除度为1的节点,就是爷爷节点接收孙子节点。(3)删除度为2的节点就是找到该节点的前驱和后继,然后降当前节点与前驱节点的值交换,就变成了前面两度为0或者1的节点删除的情况,然后在进行删除就可以了。
2024-08-27 20:11:04 231
原创 查找算法刷题【二分查找算法】
如下图所示的就是二分查找算法的原理:注意:二分查找算法中一个重要的思想:数组和函数是一样的概念,对可以使用二分法查找要求如下所示。(1)数组f[i]是有序数组(2)函数f(x)是单调的函数(3)f[i]=d,由x找d容易,由d找x较难(4)f(x)=y,由x找y容易,由y找x较难。
2024-08-26 13:48:34 247
原创 排序算法刷题【leetcode:04题,寻找两个正序数组的中位数。leetcode:219题,存在重复的元素 】
【代码】排序算法刷题【leetcode:04题,寻找两个正序数组的中位数。leetcode:219题,存在重复的元素 】
2024-08-22 16:52:47 238
原创 排序算法刷题【leetcode88题目:合并两个有序数组、leetcode21:合并两个有序链表】
题目比较简单,使用归并排序里面的同样的操作就可以,代码如下所示。
2024-08-21 23:40:55 311
原创 排序算法【插入排序】
因为第i位的元素向前调整的次数有可能位整个元素的个数位n,也有可能一次都没有调整为0,所以调整的次数的期望值为两者的中间值n/2。最外围的for循环次数为n,所以就可以得到复杂度为"(n*(n+1))/4"。也是O(n^2)的复杂度;选择排序的复杂度为“(n*(n+1))/2”,所以插入排序的时间复杂度比选择排序的时间复杂度小,但是实验发现插入排序算法比选择排序算法时间长,是因为插入算法数组元素交换的次数比较多,选择排序的交换次数少,数组的交换比较浪费时间。如下图所示的,就是插入排序算法思想。
2024-08-11 21:10:24 184
原创 时间复杂度和空间复杂度
定义:时间复杂度是用来描述算法运行所需的时间随输入规模变化的增长情况。它表示的是算法执行步骤的数量与输入数据规模之间的关系。常见的时间复杂度有:O(1)、O(logn)、O(n)、O(nlogn)、O(n^2)、O(2^n)、O(N!
2024-08-11 00:01:01 337
原创 网络知识学习(笔记二)
ios模型规定的网络模型一共有7层,但是实际使用过程中,4层的TCP/IP模型是经常使用的,网络知识学习笔记里面也是基于4层TCP/IP模型进行分析的,前面已经讲了:(1)物理层,(2)数据链路层。本次笔记将记录网络层、运输层的UDP,运输层的TCP将放在下次笔记中记录。
2023-11-22 19:05:39 1163 2
原创 模拟IIC通讯协议(stm32)(学习笔记1)(硬件iic后面在补)
较长时间的精准的延时还是需要使用系统滴答时钟的定时器实现延时的。(4)标准的IIC传输节拍信号是由7种的:起始信号、停止信号、产生ACK应答信号、产生NACK应答信号、等待ACK应答信号、接收1byte字节信号、发送1byte字节信号。(7)在上面的7种基础信号的基础上,根据不同的芯片封装不同的数据发送和接收的函数,下面将简单介绍一般的数据发送和接收协议形式,大部分ic芯片都是相同的。(2)IIC的数据传输的速率,不同的ic是不同的,根据电平维持的延时函数的时间来确定IIC数据传输的速率.
2023-10-17 16:38:23 1900
原创 stm32的时钟、中断的配置(针对寄存器),内存架构,总线地址
(1)正点原子的寄存器源码。(2)STM32F103最小系统板开发指南-寄存器版本_V1.1(正点)(3)STM32F103最小系统板开发指南-库函数版本_V1.1(正点)(4)Cortex-M3权威指南(中文)(5)STM32中文参考手册_V10(6)stm32cubemx可视化时钟树配置(7)其他博主文章本文主要以stm32f1系列单片机为研究对象,从寄存器层面对时钟树的配置、中断优先级的配置进行阐述。
2023-10-06 23:39:13 1817
原创 Dijkstra算法
Dijkstra 算法是一个基于「贪心」、「广度优先搜索」、「动态规划」求一个图中一个点到其他所有点的最短路径的算法,时间复杂度 O(n2)。这里使用C++语言实现Dijkstra算法的。算法的基本思想就是,从某点(一般都是起点)开始搜索所有能到达的点,然后找到最近的点,压入到栈中去,然后找到压入栈里面的点可以到达的点里面距离最近的点,然后将这个点替换到数组中去,然后遍历数组中的最小值压入栈中,这样依次就可以实现找到起始点到其他点的最短路径。起始点设置为“v1”,找到“v1”点到其所有的点的最短路径。
2023-08-20 14:54:21 131
原创 qt学习笔记6(线程的同步、互斥,线程中的信号与槽,线程与主页面通讯方式,信号和槽的连接方式,线程和对象的生命周期)
推荐使用让程序自动结束的方式,也就是让“run()”函数中的“while()”循环结束,可以使用while循环中使用break,也可以使用在while(data)中的‘data’条件,让这个条件不符合即可。上图所示的“terminate()”函数可以强制停止线程的运行,但是一般都很少使用这种方式,因为这种方式是不管线程程序是否运行结束,线程中使用的资源也会强制释放,这时候是不能得到得到线程中的结果的。这里所讲的线程间的同步也就是使用“wait()”函数实现等待线程的运行结束的处理方案。
2023-08-05 00:24:42 229
原创 qt学习笔记5(图形绘制,视口和窗口,图像的处理与绘制,截图,文本的绘制,随机对话框)
因为上面的规则,qt页面的绘制只有在“QWidget::paintEvent”事件函数中进行绘制,那么数据与绘制函数之间的交互就需要使用到链表,当只要有事件产生,就会运行这个事件函数,在事件函数中查询链表数据是否有更新,有更新的话,就进行页面的绘制,在外面只需要想链表中存放结构体数据就可以了。基础图形的绘制是qt中作为用户输入是比较重要的,可以作为用户实际交互的重要手段,下面将介绍一些重要的关于qt基础图像绘制的知识。下面是“QPainter”类绘画所使用的基本的绘画工具,也是重要的工具中的几个。
2023-08-01 23:21:54 956
原创 lcd驱动(soc厂家已经做好,只需要配置设备树)
lcd的配置,一般有控制器的数据总线组成,soc厂家已经将这部分的驱动写好了,我们只需要配置设备树就可以了,根据自己lcd显示屏幕的参数进行配置。还有一个操作就是如何通过tty操作lcd的驱动。如何将自己的显示器配置为shell的命令终端。
2023-07-09 11:48:18 651
原创 多点电容触摸驱动(基于gt911)
多点电容触摸的驱动使用到的知识主要有input子系统、gpio硬件中断、iic子系统,tslib测试等知识点,下面将针对多点电容触摸屏的驱动开发的四个知识点进行展开,以及gt911芯片的知识,官方gt9xx驱动的移植。
2023-07-08 15:53:33 11822
原创 Linux系统的中断函数记录
中断的操作流程主要分为两部分:中断资源的注册、中断资源的注销。中断的操作一般与硬件有联系,特别是gpio,这里也gpio为例。(1)从设备树中的结点获得相应的gpio的参数。(2)设置gpio的相关配置。(3)对应gpio的线管中断参数设置。(4)中断号申请并使能。
2023-06-30 15:01:57 608
原创 QT移植成功版本
内容简介:主要就是两部分的编译与移植,tslib和qt的编译与移植,这里一定要注意先编译tslib,因为编译qt的时候,是需要使用到tslib编译出来的头文件和库链接文件的,所以一定要先编译tslib。编译qt的时候时间是比较长的,一定要耐心的等待。所有的编译都交叉编译,确保编译出来的文件是ARM板子上可以运行的。所以如果没有交叉编译链,那么就需要安装交叉编译链。
2023-06-13 19:47:12 214
原创 QT编译环境配置,以及开发板移植的问题
编译环境的配置,这个是真个系统构建的时候配置的问题,比较麻烦,后面在补这部分的知识。韦东山的开发板和乌班图的编译工具链里面是具有qt的编译工具链的,自己看的是正点原子的视频,所以按照正点正点原子的编译工具进行配置的(具体的配置方法可以看正点原子的视频),设置的不同的项目的QT页面,需要使用的链接库也是不同的,所以新产生的QT项目的显示,需要添加新的库。
2023-05-03 22:33:33 5271
原创 Gitee的使用
这里在电脑的F盘下创建gitee文件夹,打开Git Bash窗口,进入这个文件夹中。 如上图所示,第一次克隆的时候需要输入用户名和密码。 (用户名:手机号,密码:自己设置的密码)。然后就会有下面克隆完成的文件夹下的项目:将所有文件的项目添加到本地git bash中,后面会使用命令上传。
2023-05-01 13:32:03 405
原创 中断下的四种使用形式
poll:是在用户函数哪里,首先调用poll()函数,将用户线程放进驱动程序中注册的队列中去 ,然后判断是否有事件(这个事件可以由用户自己指定,例如数据缓冲区是否为空)发生,如果没有就开始休眠,(1)如果有,中断唤醒,就休眠结束,回来继续判断是否有事件发生,这时候就会跳出poll循环了,用户程序那边就可以判断到poll函数的返回数据有事件发生,就可以进行事件操作了(例如读取数据);阻塞与非阻塞的实现,也是要靠前面介绍的队列中的中断事件等待函数实现的。妈妈在客厅干活,小孩醒了他会自己走出房门告诉妈妈。
2023-04-08 11:30:12 145
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人