尧图网络 高端网站定制 · 原创设计
免费咨询热线
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/9 1:08:09
Spring Cloud Gateway连接池与线程池调优实战:从原理到高可用架构

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

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

📅 2026/9/1 15:47:05
智能工厂等级自检表:梯度培育,你的工厂在第几级?

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

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

📅 2026/9/1 14:54:09
MORE NEWS

更多资讯

📰

PyCharm远程连接Windows服务器:SFTP部署与SSH避坑指南

pycharm 远程连接 Windows 服务器这件事,我前后在四五台机器上折腾过,从最早的 Windows Server 2012 R2 到现在的 Server 2022、Win11 专业版,踩过的坑基本能凑成一本小册子。很多人第一次做这个配置时会默认"PyCharm 的远程功能是通用的…

📰

Jupyter Notebook安装配置与中文环境全攻略:从踩坑到顺利运行

用Jupyter Notebook写东西这事,我前后折腾了好几年。最早接触它纯粹是为了给一个数据分析项目做交互式探索,那时候还在用Python自带的IDLE,每改一次代码就要重新跑一遍整个脚本,输出乱糟糟地堆在一起,想回头找某一段结…

📰

LLVM 15.0.7核心架构与工程实践:从IR到llvmpipe

1. llvm-project到底是个什么项目先说一个可能让新手懵掉的事实:当你打开GitHub上的llvm-project仓库,第一眼看到的是一堆名字奇怪的目录——llvm、clang、lld、libcxx、compiler-rt、mlir、flang——你很难相信这些东西居然是同一个项目的组成部分。但恰…

📰

VC++2010安装教程:运行库修复与C++入门实战

1. 安装之前,先弄清VC2010到底是个什么东西先说你遇到的最典型场景:昨天还好好的一个软件,今天双击打开,CMD黑窗口一闪而过,或者干脆弹出一个红色报错框,上面写着“无法启动此程序,因为计算机中…

📰

Flutter在OpenHarmony上实现高性能歌单列表

1. 项目背景与核心需求在OpenHarmony生态中构建音乐播放器应用,Flutter框架因其跨平台特性和高效的渲染性能成为理想选择。歌单列表作为音乐类App的核心功能模块,直接影响用户体验和产品留存率。本次实战聚焦如何利用Flutter在OpenHarmony平台上实现高性…

📰

接口地址填好后,Agent 跑 Skill 的 Token 账对 TaoToken

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

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

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

📞 💬