
C/C++
叔子衿
山风水月皆下等,唯有眼前人为上
展开
-
插入排序C语言实现 - 源码详解
插入排序时间复杂度:O(N²)稳定性:稳定排序原理: 插入排序适合数据已大致有序了的场合 假定一个初始有序数列(初始设定首元素为有序数列),后边的元素都是待插入数据,一次插入一个, 在有序数列中找待插入数据的位置,然后在将该位置后的有序数据后移,空出位置,然后插入。 以此类推直到所有数据插入完成。适用场景: 数据相对有序、算法时间要求低稳定性好的场景中,选排是一个比较好的选择...原创 2019-10-12 15:25:23 · 1601 阅读 · 0 评论 -
快速排序C语言实现 - 源码详解
取初始基准值,将数组中其它元素与基准值比较,根据大小分别放置在基准值的左右。 一轮比较后,确定该基准值在数组中的确切位置。再将该位置前后所有元素分成两个数组,重复上述过程,直到最后只剩下一个数进入下一轮,则重复完毕。原创 2019-10-12 15:10:35 · 3707 阅读 · 2 评论 -
选择排序C语言实现 - 源码详解
时间复杂度:O(N²) 稳定性:不稳定 排序原理: 从前往后遍历,每一次遍历都从待排序数列的剩余数列中,选择最大(最小)数出来放置在数列前方 排序过程:(大到小) 1.从前向后遍历数组 2.初始假定已排序数列为data[0],从后面的数据中查找最大值所在位置(下标) 3.将找到的最大数与已排序的后...原创 2019-10-12 14:51:33 · 1081 阅读 · 0 评论 -
冒泡排序C语言实现 - 源码详解
冒泡排序 时间复杂度:O(N²) 稳定性:稳定 排序原理: 从前往后依次比较相邻的两个数据(如0:1 1:2 2:3 3:4 ... n:tail), 根据排序方向,将最大(最小)值移到最后面,一次遍历浮出一个数据, N次遍历之后,就将所有数据排序完成了。 排序过程: 见源码及注释...原创 2019-10-12 14:31:39 · 8414 阅读 · 0 评论 -
C语言可变参数函数实现原理解析 - 重写printf
可变参数基于函数调用及参数传递的方式实现前题本文部分内容参考此文:https://blog.youkuaiyun.com/yexiang优快云/article/details/83900366在C语言中,函数调用有4个主流的调用惯例,cdecl、stdcall、fastcall、pacall,它们之间主要的区别在于参数传递时的压栈顺序以及参数栈清理方。如下表: 调用惯例 ...原创 2019-10-12 11:33:49 · 1387 阅读 · 0 评论 -
C语言关于const、static、volatile、sizeof、extern关键字的深度剖析
Const(恒定不变的) 被Const关键字修饰的变量、数组、指针、函数返回值,在编译时告诉编译器这是一个只读变量,且在定义时不会分配内存空间给变量,此时编译器无法得知它的值,只有在运行过程中它是一个全局的只读变量,被存放在静态区。 Const与宏define有点相似,都不具有可变性(不能在使用过程中修改它的值),都需要在定义同时初始化。但define是只做简单的替换,相当...原创 2018-07-09 15:38:41 · 423 阅读 · 0 评论 -
stm32使用XR20M1172详细攻略·SPI转UART串口
1.XR20M1172总结概述 XR20M1172是一块高性能的2通道通用异步接收器和发送器,通常用于串口不够用或外设模块只支持串口的场景中,其输入端有SPI和IIC两种协议可选,输出端两路UART,既可以SPI转串口或IIC转串口。XR20M1172的协议可定制化程度很高,利用寄存器配置可以很灵活的设置各种所需要的场景,如波特率设置、RTS、奇偶校验、特殊字符匹配、发送接收中断...原创 2019-04-04 09:55:52 · 11759 阅读 · 1 评论 -
关于结构体内存对齐 - 自然对界 理论知识以及实验验证理解
关于结构体内存对齐 - 自然对界理论知识以及实验验证理解自然对界:既结构体内存对齐时各成员变量所占内存对齐时的边界。结构体内存对齐:结构体各成员变量默认会向占内存最大成员变量靠齐。如果结构体中包含其它结构体变量时,默认边界对齐时,寻找最大成员变量的范围会包含该结构体中的成员变量。栗子如下:struct A { char variableA;...原创 2019-08-15 14:00:42 · 387 阅读 · 0 评论