
C语言算法集
文章平均质量分 90
嵌入式老牛
跟自己较劲
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
第1_3课 数字编码
我们注意到,区间 [−127,+127] 内的所有整数都有对应的原码、反码和补码,并且原码和补码之间可以互相转换。现在我们可以总结出计算机使用补码的原因:基于补码表示,计算机可以用同样的电路和操作来处理正数和负数的加法,不需要设计特殊的硬件电路来处理减法,并且无须特别处理正负零的歧义问题。如果我们先将原码转换为反码,并在反码下计算 1+(−2) ,最后将结果从反码转换回原码,则可得到正确结果 −1。例如在原码下计算 1+(−2) ,得到的结果是 −3 ,这显然是不对的。原创 2025-05-08 10:41:13 · 853 阅读 · 0 评论 -
第1_4课 字符编码
在计算机中,所有数据都是以二进制数的形式存储的,字符 char 也不例外。为了表示字符,我们需要建立一套“字符集”,规定每个字符和二进制数之间的一一对应关系。有了字符集之后,计算机就可以通过查表完成二进制数到字符的转换。原创 2025-05-08 10:23:25 · 935 阅读 · 0 评论 -
第1_2课 基本数据类型
在计算机系统中,所有复杂数据形式(如文本、图像、视频、语言、3D模型等)的本质都可分解为基本数据类型的组合。这是因为数组的线性结构可以表示数字的相邻关系和顺序关系,但至于存储的内容是整数 int、小数 float 还是字符 char ,则与“数据结构”无关。在绝大多数现代操作系统中,1 字节(byte)由 8 比特(bit)组成。请注意,上表针对的是 Java 的基本数据类型的情况。例如以下代码,我们用相同的数据结构(数组)来存储与表示不同的基本数据类型,包括 int、float、char、bool 等。原创 2025-04-23 21:50:21 · 980 阅读 · 0 评论 -
第1_1课 数据结构分类
常见的数据结构包括数组、链表、栈、队列、哈希表、树、堆、图,它们可以从“逻辑结构”和“物理结构”两个维度进行分类。原创 2025-04-18 08:40:02 · 446 阅读 · 0 评论 -
栈与递归以及C语言实现
1.系统隐式使用栈实现递归调用链2.显式栈可模拟递归执行过程3.栈深度决定递归内存消耗 理解这种机制有助于:a) 优化递归算法性能b) 避免栈溢出错误c) 灵活选择递归/迭代实现方式。原创 2025-04-16 09:55:28 · 707 阅读 · 0 评论 -
斐波那契数列分析
斐波那契数列是意大利数学家列昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入一个数列。假定成熟兔兔每月能生产一对初生小兔,而初生小兔一个月后就成为成熟兔兔,可以在下一个月生产小兔。这个问题导致了著名的数列。它是一个线性递归数列,任何一个数字都是前面两数字的总和.这个数列一般称为斐波那契数列,它的每一项称为斐波那契数。原创 2025-04-16 09:55:14 · 848 阅读 · 0 评论 -
算法的时间复杂度
常见时间复杂度按效率从高到低排列:O(1)(常数) < O(logn)(对数) < O(n)(线性) < O(nlogn)(线性对数) < O(n²)(平方) < O(2^n)(指数) < O(n!)(阶乘)。此处说明一下,时间复杂度仅仅描述了随着n增加其执行次数增长的速度,并不直接与具体执行次数关联。也即从上图看出,虽然指数阶的时间复杂度要远远高于平方阶,但是当n较小时,指数阶的执行次数反而会更少。原创 2025-04-15 12:17:56 · 829 阅读 · 0 评论 -
算法的空间复杂度
对于常规函数,显式申请的额外空间,如动态分配的数组或对象等,才是随着问题规模可能呈线性、对数等不同趋势增长的部分,是影响空间复杂度的关键因素。总言之,递归栈空间中单个栈帧的结构和大小在编译时期是可以确定的,但递归过程中栈空间的实际创建和使用是在运行时动态进行的,并不是完全在编译时期就确定好的。因为空间复杂度算的是所处的量级,所以是O(N^2。因此空间复杂度只考虑在运行过程中为局部变量分配的存储空间的大小,它包括为参数表中形参变量分配的存储空间和为在函数体中定义的局部变量分配的存储空间两个部分。原创 2025-04-15 12:17:35 · 1192 阅读 · 0 评论 -
栈和队列在嵌入式系统下的C语言实现
与栈的实现方案选择类似,基于嵌入式系统的计算、存储资源相对有限,且嵌入式系统一般都是定制开发,需求相对确定,故优先使用循环队列。本文将从栈与队列的基本概念、存储结构、操作实现,结合嵌入式系统的资源受限性,采用C语言代码示例进行说明。的线性表,插入(入队)在队尾进行,删除(出队)在队头进行。同样,在队列的实现方式中,也有基于数组实现的循环队列以及基于链表实现的链队列。下面以循环队列为例,实现队列的初始化、入队、出队、空队列检测的操作。下面以顺序栈为例,实现栈的初始化、入栈、出栈、空栈检测的操作。原创 2025-03-18 21:01:43 · 1233 阅读 · 0 评论 -
常用无功功率算法的C语言实现(二)
利用低通滤波器实现90°相移,以此计算无功功率原创 2025-03-08 21:15:31 · 917 阅读 · 0 评论 -
常用无功功率算法的C语言实现(一)
常用的两种无功功率计算方法,数字延迟法、积分移相法在不间断采样、采用周期缓存两种应用场景下的实现原创 2025-03-07 08:59:09 · 1165 阅读 · 0 评论