嵌入式开发学习日志(排序算法,字符型数组) day8 持续更新中
📅 2026/7/30 6:15:15
👁️ 次浏览
一、数组排序升序、降序1. 选择排序思想将待排序位置的数据和后面的数据依次进行比较按照升序要求将较小值存储在待排位置。时间复杂度效率O(n²)空间复杂度空间 / 内存O(1)排序算法的稳定性定义 在一个待排序列中出现了两个相同的数据经过排序之后这两个相同数据的相对位置没有发生变化则该排序算法为稳定的排序算法假如这两个相同数据的相对位置发生了变化则该排序算法是一个不稳定的排序算法。参考代码int a[10] {1,2,-3,-4,-5,6,7,8,-9,0}; int len sizeof(a) / sizeof(a[0]); int i 0; int j 0; int tmp 0; for (i 0; i len-1; i) { for (j i1; j len; j) { if (a[i] a[j]) { tmp a[i]; a[i] a[j]; a[j] tmp; } } }2. 冒泡排序思想相邻两两数据进行比较按照升序要求将较大值交换到两两中的后者位置经过一趟排序优先确定最大值。时间复杂度O(n²)空间复杂度O(1)稳定性稳定参考代码降序冒泡int a[10] {1,-2,-3,4,5,6,7,8,-9,0}; int len sizeof(a) / sizeof(a[0]); int i 0; int j 0; int tmp 0; for (j 0; j len-1; j) { for (i 0; i len-1-j; i) { if (a[i] a[i1]) { tmp a[i]; a[i] a[i1]; a[i1] tmp; } } }3. 插入排序课件仅标题标注无代码实现4. 二分查找折半查找前提条件序列必须有序思想升序数组将要查找的值和序列的中间位置值比较比中间位置值大则在后半序列中继续折半查找如果比中间值小则从前半个序列中继续折半查找如果恰好相等则找到。优势效率高时间复杂度 O(log n)参考代码i 0; j len-1; while (i j) { mid (i j) / 2; if (num a[mid]) { i mid 1; } else if (num a[mid]) { j mid - 1; } else { printf(find %d\n, a[mid]); break; } } if (i j) { printf(Not find\n); }二、字符型数组作用保存多个字符 → 存储字符串1. 字符型数组定义char 数组名[常量];数组名遵循标识符命名规则 示例char str[32]; // sizeof(str) 结果为32字节2. 字符型数组元素访问格式数组名[下标]str[0]; //类型为char⚠注意下标避免数组越界。3. 字符型数组的初始化1全部初始化char str[5] {h,e,l,l,o}; char str[] {h,e,l,l,o}; //占用5字节 char str[] {hello}; char str[] hello;当 [] 常量被省略时数组空间按照初始化后的字符个数确定字符串形式初始化会额外增加\0存储位置。2局部初始化char str[32] {h,e,l,l,o}; char str[32] {hello}; char str[32] hello;规则没有初始化的部分默认存储 0\0区分记忆0等价于\048等价于000 \03初始化全 0char str[32] {0}; char str[32] {\0};4. 字符型数组的存储特点单一性存储类型为 char有序性访问顺序str[0] → str[n]连续性内存占用连续空间5. 字符型数组的输入输出输出方式char str[32] {h,e,l,l,o}; char str1[32] {hello}; int i 0; //方式1循环逐个字符输出 for (i 0; str[i] ! \0; i) { printf(%c, str[i]); } printf(\n); //方式2printf整体输出 printf(%s\n, str); printf(%s\n, str1); //方式3puts输出自带换行 puts(str); puts(str1);输入方式char str[100] {0}; //遇到空格、tab、回车停止读入 scanf(%s, str); //危险函数存在越界风险新标准C已经废弃 gets(str);两个核心函数区分strlen(str)计算字符串有效字符长度不包含\0sizeof(str)计算字符数组占用内存总字节数由定义数组时开辟空间大小决定6. 字符型数组操作方法字符串基础功能① strlen获取字符串长度手写实现原理int i 0; while (src[i] ! \0) { i; } printf(len %d\n, i);② strcpy把源字符串拷贝到目标字符数组中手写实现原理char src[32] {hello world}; char dst[32] {0}; int i 0; while (src[i] ! \0) { dst[i] src[i]; i; } dst[i] \0; printf(dst %s\n, dst);③ strcat将源字符串拼接到目标字符串后边④ strcmp比较两个字符串大小三、核心易错点汇总字符串结束标志\0ASCII 0和字符0ASCII 48绝对不能混淆scanf(%s)无法读取带空格字符串gets()可以读取空格但函数已废弃排序区分稳定性选择排序不稳定冒泡排序稳定二分查找只能用于有序数组strlen和sizeof是高频考点不要混淆字符数组拷贝、拼接完成后必须手动补充结束符\0否则输出乱码。
引言 本文是 Linux 系统编程系列的第四篇。在阅读本文之前,强烈建议你先理解文件描述符和基础 IO 的相关概念。如果尚未阅读,可以点击这里跳转至上一篇博客:基础IO认知 一、文件描述符分配的秘密:遍历 fd_array,从小到…
📅 2026/7/30 6:15:15
如果你问一个FPGA工程师"FPGA设计的本质是什么",可能会得到各种答案:有人说是硬件描述语言编程,有人说是数字电路设计,还有人说是并行计算架构。但真正深入做过FPGA项目的人会告诉你,FPGA设计的本质其实是在…
📅 2026/7/30 6:14:14
1. 项目概述:从点亮第一行字符开始拿到一块单片机开发板,旁边放着一块小小的LCD1602液晶屏,这几乎是每个嵌入式初学者都会经历的经典场景。这块屏幕不大,只能显示两行,每行16个字符,但它却是连接我们代码世…
📅 2026/7/30 6:14:14
1. 从“醉汉”到“市场”:理解时间序列的两种基础状态刚接触时间序列分析的朋友,常常会被ARIMA、LSTM这些复杂模型的名字唬住,恨不得马上用它们去预测股票或者销量。但干了这么多年数据分析,我越来越觉得,真正理解一个…
📅 2026/7/30 7:16:17
1. 项目概述:为什么要在UniApp插件里调用C的so库?最近在做一个UniApp项目,需要处理一些高强度的图像计算。用JavaScript写了个算法,在模拟器上跑得还行,一到真机上就卡成幻灯片。这让我不得不重新思考技术选型。UniApp…
📅 2026/7/30 7:16:17
1. 从零到一:为什么我选择Fusion 360作为硬件设计的起点如果你和我一样,是个对硬件产品设计充满好奇,但又非机械工程科班出身的“野生”创客或工程师,那么在选择第一个三维设计软件时,大概率会和我当年一样,…
📅 2026/7/30 7:16:17
1. 项目概述:从“哔哔”声到“哆来咪”玩过STM32的朋友,估计都用过蜂鸣器。有源的蜂鸣器最简单,给个高电平就响,但声音永远是单调的“哔——”声,想让它唱个歌?门都没有。而无源蜂鸣器,就像一块…
📅 2026/7/30 7:16:17
1. OpenClaw与云服务API整合的背景与价值OpenClaw作为一款新兴的开源自动化工具,正在开发者社区快速流行。它最初的设计目标是简化跨平台任务的自动化执行,但近期通过与各类云服务API的深度整合,展现出了更强大的应用潜力。2026年的技术生态中…
📅 2026/7/30 7:16:17
真的服了,每次看到有人问我“geo35优化到底有没有用”或者“为什么我照着做还是没流量”,我就想叹气。这玩意儿要是真像某些营销号吹得那么神,大家早就躺赢了,还用得着天天熬夜改代码、盯数据?geo35优化这事儿,说白了就是跟搜索引擎的脾气打交道,你得懂它的逻辑,而不是…
📅 2026/7/30 7:15:36
本文关键词:geo2是共价化合物哎,说实话,每次看到化学题里那些弯弯绕绕的电子式,我就头大。特别是遇到那种非要让你判断是离子还是共价的,心里就发毛。今天咱不整那些虚头巴脑的定义,就聊聊二氧化硅,也就是大家常说的硅石、石英,很多人会误写成geo2,虽然化学式不对,但…
📅 2026/7/30 0:00:24
B4557 [GESP202606 四级] 扫雷 https://www.luogu.com.cn/problem/B4557 中国计算机学会(CCF)2026年6月C四级讲解——扫雷 https://www.bilibili.com/video/BV1MCMg6AEXR/ B4557 [GESP202606 四级] 扫雷 https://www.bilibili.com/video/BV1ZKTj6ZEVh/ 2…
📅 2026/7/30 0:00:26
Windows驱动存储终极清理工具:DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer
您是否曾因Windows系统盘空间不足而烦恼?是否遇到过设…
📅 2026/7/30 0:00:26
更多请点击:
https://codechina.net
第一章:AI帮助理解数学概念 人工智能正以前所未有的方式重塑数学学习的路径。通过自然语言处理与符号计算的深度融合,AI不仅能解析抽象定义,还能将定理、证明和几何直觉转化为可交互、可验证的…
📅 2026/7/30 1:16:07
1. 项目背景与核心价值去年参与的一个短剧项目让我深刻体会到传统创作流程的痛点:编剧团队花了三周打磨剧本,角色设计反复修改了七版,最后成片时又因为演员档期问题不得不临时调整分镜。这种低效的创作模式在快节奏的内容行业越来越难以为继。…
📅 2026/7/30 1:16:07
remix-i18next TypeScript类型安全实践:确保翻译键与类型定义同步 【免费下载链接】remix-i18next The easiest way to translate your React Router framework mode apps 项目地址: https://gitcode.com/gh_mirrors/re/remix-i18next
在开发多语言应用时&am…
📅 2026/7/30 1:16:07
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/30 7:16:27
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/29 17:15:46
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/30 5:16:22