尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
嵌入式开发学习日志(排序算法,字符型数组) day8 持续更新中
一、数组排序升序、降序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否则输出乱码。
RELATED

相关推荐

揭开重定向的面纱:从文件描述符分配到“一切皆文件”的内核哲学

揭开重定向的面纱:从文件描述符分配到“一切皆文件”的内核哲学

引言 本文是 Linux 系统编程系列的第四篇。在阅读本文之前,强烈建议你先理解文件描述符和基础 IO 的相关概念。如果尚未阅读,可以点击这里跳转至上一篇博客:基础IO认知 一、文件描述符分配的秘密:遍历 fd_array,从小到…

📅 2026/9/19 0:24:34
Spring Cloud Gateway连接池与线程池调优实战:从原理到高可用架构

Spring Cloud Gateway连接池与线程池调优实战:从原理到高可用架构

1. 项目概述:为什么Gateway参数调优是微服务稳定的基石在微服务架构里,Spring Cloud Gateway 作为流量入口,它的性能表现直接决定了整个系统的稳定性和用户体验。很多团队在初期搭建时,往往只关注功能实现,把Gateway当…

📅 2026/11/2 7:24:10
智能工厂等级自检表:梯度培育,你的工厂在第几级?

智能工厂等级自检表:梯度培育,你的工厂在第几级?

本周一(2026年7月27日),山东省《智能工厂梯度培育办法》正式施行。文件里有一句话,值得所有制造企业停下来读两遍:鼓励"梯度培育、逐级跃升"。 翻译成大白话就是——别一上来就想着建成"黑灯工厂"…

📅 2026/10/9 4:26:22
MORE NEWS

更多资讯

📰

吴江电工证怎么领补贴 官方回应来了

吴江电工证怎么领补贴 官方回应来了 之前考的证在外省能不能转过来?这是很多电工同行关心的问题。 官方回应 明确表示,只要是国家统一颁发的特种作业操作证,可以通过“全国特种作业操作证查询平台”进行信息核验和证件转移。吴江电工证怎么领补贴,这其…

📰

沈阳电工证报名官网内部消息:学历不高怕报不上名?教你正确报名通道

沈阳电工证报名官网内部消息:学历不高怕报不上名?教你正确报名通道 你是不是也觉得学历不高就报不了名?别急,沈阳电工证报名官网早就有了内部消息, 学历不是门槛…

📰

电工证里的特种指怎么报名?证书过期了不知道怎么复审延期

电工证里的特种指怎么报名?证书过期了不知道怎么复审延期 证书过期了不知道怎么复审延期?这事儿在特种作业行业里太常见了。尤其是电工证里的特种指,很多人以为是普通电工证,其实不然,它涉及高压、低压、特种作业等不同类别,一旦错过复审期限,不仅影响…

📰

济南建筑电工证怎么办,真实经历告诉你别被中介坑

济南建筑电工证怎么办,真实经历告诉你别被中介坑 不知道去哪报名怕被中介坑,你不是一个人。去年我认识的一位洛阳涧西区中小施工企业负责人老王,为了给工人办证,跑遍了济南的各大培训机构,结果被多个中介忽悠,不仅多花了钱,还浪费了时间。这次他终于找…

📰

南阳卧龙区水利工程从业者怎么考曾双平高压电工作业证?多少钱?避坑指南来了

南阳卧龙区水利工程从业者怎么考曾双平高压电工作业证?多少钱?避坑指南来了 你是不是也和我一样,刚进工地就听说“特种作业证是上岗的门槛”,特别是高压电工证,没有它连电箱都碰不了?这不,我身边就有个朋友,为了接项目硬着头皮报了曾双平高压电工作业…

📰

保定去哪里考电工证好怎么拿证快 电工证多久拿证

保定去哪里考电工证好怎么拿证快 电工证多久拿证 你是不是学历不高,担心自己报不了电工证?其实现在考证不看学历,只要你符合年龄和健康要求,就能报名。在保定, 保定去哪里考电工证好 ,很多人都在问,我也帮不少像你一样的朋友找过答案。今天我就从…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬