
数据结构与算法
文章平均质量分 83
数据结构与算法相关文章
AI+程序员在路上
技术分享,互学共进~
展开
-
数据结构(堆)
1.堆(Heap)是计算机科学中一类特殊的数据结构的统称。堆就是以二叉树的顺序存储方式来存储元素,同时又要满足父亲结点存储数据都要大于等于儿子结点存储数据(也可以是父亲结点数据都要小于等于儿子结点数据)的一种数据结构。堆只有两种即大堆和小堆,大堆就是父亲结点数据大于等于儿子结点数据,小堆则反之。2.堆满足下列性质:堆中某个节点的值总是不大于或不小于其父节点的值。堆总是一棵完全二叉树。原创 2025-01-16 20:14:00 · 494 阅读 · 0 评论 -
OpenCV目标检测 级联分类器 C++实现
OpenCV目标检测 级联分类器 C++实现一.目标检测技术目前常用实用性目标检测与跟踪的方法有以下两种:帧差法级联分类器原创 2024-12-17 15:32:16 · 1312 阅读 · 0 评论 -
OpenCV及基本用法
OpenCV及基本用法OpenCV 的全称是 Open Source Computer Vision Library,是一个开放源代码的计算机视觉库。OpenCV 是最初由英特尔公司发起并开发,以 BSD 许可证授权发行,可以在商业和研究领域中免费使用,现在美国 Willow Garage 为 OpenCV 提供主要的支持。OpenCV 可用于开发实时的图像处理、计算机视觉以及模式识别程序,目前在工业界以及科研领域广泛采用。原创 2024-12-17 15:29:27 · 1061 阅读 · 0 评论 -
cmake与VS编译opencv
cmake与VS编译opencv一.编译环境 VS2022 cmake-3.29.3 二.OpenCV文件官网下载地址:https://opencv.org/releases/最新版本:opencv-4.10.0.zip原创 2024-12-11 21:12:57 · 288 阅读 · 0 评论 -
QT编译opencv
QT编译opencv一.QT5.12编译1.QT环境QT5.12Qt Creator 12.0.22.OpenCV文件因为QT5.12版本qt最后支持到2021.12月,所以这里选择的opencv版本为2021.4月发布的opencv-3.4.16版本官网下载地址:https://opencv.org/releases/最新版本:opencv-3.4.16.zip原创 2024-12-13 20:27:05 · 1342 阅读 · 0 评论 -
C语言实现程序执行时间打印
C语言实现程序执行时间打印time(): 返回的秒数是整数,精确到秒,因此精度较低。clock(): 提供的时间可能更精确,因为它是基于CPU时间,可以精确到毫秒。gettimeofday(): 提供更高的时间精度,通常可以精确到微秒级。实际的时间输出将根据系统性能和执行时间而有所不同。原创 2024-11-18 20:43:34 · 1373 阅读 · 0 评论 -
二维数组转一维数组提升效率方法
二维数组转一维数组提升效率方法原创 2024-11-09 06:53:48 · 755 阅读 · 0 评论 -
十大排序算法的特点及应用场景
十大排序算法的特点及应用场景综合效率对比建议1.如果数据量小,用哪种排序方法都可以,效率差别不大2.如果数据量大;内存充裕建议用快速排序,内存不充裕建议用堆排序。原创 2024-09-11 20:24:35 · 1945 阅读 · 0 评论 -
原码、反码、补码及用途
原码、反码、补码及用途反码(Ones' Complement)概念:反码是通过对原码的数值部分逐位取反(0变1,1变0)得到的。正数的反码和原码相同。负数的反码是其原码除符号位外所有位取反。补码(Two's Complement)概念:补码是反码加1得到的。正数的补码和原码相同。负数的补码是其反码加1。原创 2024-09-06 20:28:12 · 1768 阅读 · 0 评论 -
区块链技术介绍
区块链技术介绍区块链是一种分布式数据库技术,它以链式数据结构的形式存储数据,每个数据块与前一个数据块相关联,形成了一个不断增长的数据链。每个数据块中包含了一定数量的交易信息或其他数据,这些数据经过加密和验证后被添加到区块链上。由于每个数据块都包含了前一个数据块的哈希值,因此任何尝试篡改数据的行为都会被迅速地检测出来。原创 2024-09-06 20:21:57 · 1298 阅读 · 0 评论 -
数字证书、数字签名及其关系
数字证书、数字签名及其关系数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。简单地说,数字证书是一段包含用户身份信息、用户公钥信息以及份验证机构数字签名的数据。数字签名是一种用于保证数字信息完整性、真实性和不可抵赖性的技术。它利用公钥加密技术,通过私钥对信息的摘要进行加密生成签名,接收方则使用公钥进行解密和验证。原创 2024-09-05 20:05:42 · 2011 阅读 · 0 评论 -
信息加解密技术
信息加解密技术对称加密加密和解密使用相同的密钥。常见的对称加密算法包括AES、DES、3DES和IDEA。对称加密的优点是加密和解密速度快,适合大量数据的加密处理。缺点是密钥管理和分发复杂,不适合在网络环境中大规模使用。非对称加密加密和解密使用不同的密钥,一个称为公钥(public key),另一个称为私钥(private key)。公钥可以公开,私钥必须保密。常见的非对称加密算法包括RSA、ECC(椭圆曲线密码)和DSA(数字签名算法)。原创 2024-09-05 20:03:38 · 864 阅读 · 0 评论 -
哈希算法及算法库
哈希算法及算法库哈希算法,又称为散列函数或摘要算法,是计算机科学中一种重要的算法,它通过将任意长度的输入数据转换成固定长度的输出值(即哈希值或摘要),来实现数据的压缩和唯一性标识。哈希算法在数据安全、信息检索、数据完整性验证等多个领域有着广泛的应用。原创 2024-08-22 19:58:09 · 724 阅读 · 0 评论 -
C语言获取文件MD5值
C语言获取文件MD5值D5(Message Digest Algorithm 5)是一种常用的哈希函数算法。将任意长度的数据作为输入,并生成一个唯一的、固定长度(通常是128位)的哈希值,称为MD5值。MD5算法以其高度可靠性和广泛应用而闻名。MD5算法主要具备以下特点:(1)不可逆性:给定MD5值无法通过逆运算得到原始数据。(2)唯一性:不同的输入数据会生成不同的MD5值。(3)高效性:对于给定的数据,计算其MD5值是非常快速的。原创 2024-08-10 10:45:33 · 1568 阅读 · 0 评论 -
C语言实现链表
C语言实现链表链表结构,支持动态增加节点,释放节点,比较适合存储动态数据的应用场景,而且链表的空间是存储在堆上面的,可以动态分配,释放。链表特点:(1)数组的空间是连续的,可以直接通过[]下标访问。(2)链表的节点是不连续的,需要通过每个节点的指针,来找到上一个节点或者下一个节点的地址。原创 2024-07-20 08:41:47 · 1296 阅读 · 0 评论 -
C语言实现队列
C语言实现队列队列,是一种先进先出(first in first out 简称FIFO)的数据结构,是只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,在队列中,进行插入的一端称为队尾,进行删除的一端称为队头。队列也可以分为顺序队列(基于数组实现)和链队列(基于链表实现)。原创 2024-08-10 10:47:26 · 1217 阅读 · 0 评论 -
C语言中异或的应用
C语言中异或的应用在C语言中,异或(XOR)是一种二进制运算,它对两个数字的对应位进行比较,如果这两个位不同,则结果为1;如果这两个位相同,则结果为0。异或运算符在C语言中是^。1.异或运算有几个有趣的性质:交换律:a ^ b = b ^ a结合律:(a ^ b) ^ c = a ^ (b ^ c)任何数与0异或都等于其本身:a ^ 0 = a任何数与自身异或都等于0:a ^ a = 0异或运算对同一个数进行两次,结果仍为原数:a ^ b ^ b = a(因为b ^ b = 0,然后a ^原创 2024-08-09 19:54:14 · 1492 阅读 · 0 评论 -
C语言结构体及位域
C语言结构体及位域1.定义和声明结构体是由不同数据类型数据构成的组合型的数据结构,是用户自定义的数据类型。 2.结构体类型的声明格式:struct 结构体名{ 成员列表};二.位域1.什么是位域及位域作用当我们在一个程序中要用到很多,开关量,这些变量只需要存储0和1,这时候我们就不需要那么多的内存空间,我们只需要每个变量的1位就可以存储原创 2024-07-22 15:55:31 · 955 阅读 · 0 评论 -
C语言联合及枚举
C语言联合及枚举一.联合体1.联合体类型的声明像结构体一样,联合体也是由一个或者多个成员构成,这些成员可以不同的类型,但是编译器只为最大的成员分配足够的内存空间。联合体的特点是所有成员共用同一块内存空间。所以联合体也叫:共用体,给联合体其中一个成员赋值,其他成员的值也跟着变化。二.枚举类型 1.枚举类型的声明枚举顾名思义就是一一列举,把可能的取值一一列举。原创 2024-07-22 15:58:12 · 525 阅读 · 0 评论 -
嵌入式常见的五种校验算法(c语言)
嵌入式常见的五种校验算法(c语言) 为了在串口通信或者固件升级时防止数据传输错误导致出现问题,一般要引入校验算法,嵌入式常见简易校验算法(c语言)主要有:奇偶校验发,校验和,异或校验,CRC校验,md5,每种校验方法都有自己的特点,在不同场景可以选择合适的算法进行应用。原创 2024-07-26 20:00:33 · 1452 阅读 · 0 评论 -
递归算法及应用
递归算法及应用递归就是程序调用自身的编程技巧。递归通常把一个大型复杂的问题层层转化为一个与原问题相似,规模较小的问题来求解。递归策略只需要少量的程序就可以描述出解题过程所需要的多次重复的计算,大大减少程序的代码量。递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。原创 2024-08-26 19:56:49 · 1077 阅读 · 0 评论 -
语音降噪算法库介绍
一.语音降噪技术方向及算法软件上进行语音降噪目前主要是两个方向:传统降噪算法和AI降噪算法,他们各有千秋,目前看他们各有千秋,有各自适用场景。原创 2024-06-01 23:24:16 · 2223 阅读 · 0 评论 -
VST3音频插件技术介绍
VST3音频插件技术介绍一.概述1.VST3介绍 VST3(Virtual Studio Technology 3)是一种音频插件格式,由Steinberg公司开发,用于在数字音频工作站(DAW)中使用。VST3插件可以是模拟合成器、鼓机、混响器、压缩器等多种类型的音频处理工具[2]。2.官网https://www.steinberg.net/developers/原创 2024-06-18 20:20:48 · 1735 阅读 · 0 评论 -
算法复杂度介绍
算法的复杂度算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法的好坏,一般是从时间和空间两个维度来衡量的,即时间复杂度和空间复杂度。时间复杂度主要衡量一个算法的运行快慢,而空间复杂度主要衡量一个算法运行所需要的额外空间。在计算机应用的早期,存储容量很小,所以对空间复杂度很是在乎。但现在计算机行业迅速发展,计算机的存储容量已经很高,所以我们如今已经不需要再特别关注一个算法的空间复杂度。原创 2024-04-27 12:29:54 · 846 阅读 · 0 评论