【C语言入门必看】数组排序、二分查找与字符数组全解析
前言数组是C语言中最基础、最常用的数据结构之一。掌握数组的排序、查找以及字符数组的操作是每位C语言学习者的必经之路。本文将带你深入理解选择排序、冒泡排序、二分查找的原理与实现并详细讲解字符数组的定义、初始化、输入输出及常用操作方法。文章结构清晰代码示例丰富助你快速掌握核心知识点。1. 数组排序排序算法是数据处理的基础。下面介绍两种经典的排序算法选择排序和冒泡排序。1选择排序核心思想每一轮从未排序部分中选出最小或最大的元素放到已排序部分的末尾。时间复杂度O(n²)空间复杂度O(1)稳定性选择排序是一种不稳定的排序算法。因为在交换过程中相等元素的相对位置可能会发生变化。#include stdio.h int main(void) { int arr[10] {2, 5, 4, -8, 0, 9, 4, 50, 32, -54}; int len sizeof(arr) / sizeof(arr[0]); int tmp 0; for (int i 0; i len - 1; i) { for (int j i 1; j len; j) { if (arr[i] arr[j]) // 排升序 排降序 { tmp arr[i]; arr[i] arr[j]; arr[j] tmp; } } } for (int i 0; i len; i) { printf(arr[%d] %d\n, i, arr[i]); } return 0; }2冒泡排序核心思想重复地遍历待排序序列依次比较相邻的两个元素如果顺序错误就交换它们直到没有需要交换的元素为止。时间复杂度O(n²)空间复杂度O(1)稳定性冒泡排序是一种稳定的排序算法。因为只有相邻元素比较并交换相等元素的相对位置不会改变。#include stdio.h int main(void) { int arr[10] {1, -5, 40, 39, 0, -25, 69, 44, 3, 21}; int len sizeof(arr) / sizeof(arr[0]); int tmp 0; for (int j 0; j len - 1; j) { for (int i 0; i len - 1 - j; i) { if (arr[i] arr[i 1]) // 排升序 排降序 { tmp arr[i]; arr[i] arr[i 1]; arr[i 1] tmp; } } } for (int i 0; i len; i) { printf(arr[%d] %d\n, i, arr[i]); } return 0; }2. 二分查找折半查找前提条件待查找的序列必须是有序的。核心思想升序为例将待查找的值与序列中间位置的元素进行比较。如果比中间值大则在右半部分继续查找如果比中间值小则在左半部分继续查找如果相等则查找成功。优势查找效率高时间复杂度为 O(log n)。#include stdio.h int main(void) { int arr[10] {50, -1, 2, 3, -4, 5, 6, -7, 64, 9}; int len sizeof(arr) / sizeof(arr[0]); int num 0; // 先对数组进行排序这里使用选择排序 for (int i 0; i len - 2; i) { for (int j i 1; j len - 1; j) { if (arr[i] arr[j]) { int tmp arr[i]; arr[i] arr[j]; arr[j] tmp; } } } for (int i 0; i len; i) { printf(arr[%d] %d\n, i, arr[i]); } printf(Please input a number:\nnum ); scanf(%d, num); // 二分查找 int i 0; int j len - 1; int mid 0; while (i j) { mid (i j) / 2; if (num arr[mid]) { i mid 1; } else if (num arr[mid]) { j mid - 1; } else { printf(Found the number!\narr[%d] %d\n, mid, num); break; } } if (i j) { printf(Not Found!\n); } return 0; }3. 字符型数组字符型数组用于存储字符串即多个字符。1字符数组定义char 数组名[常量]; // 数组名遵循标识符的命名规则。 char str[32]; // 分配32个字节的空间2字符型数组的访问数组名[下标]; // 例如 str[0]; // 访问第一个字符 // 注意下标不能越界否则会导致未定义行为。3字符型数组的初始化全部初始化char str[5] {h, e, l, l, o}; char str[] {h, e, l, l, o}; char str[] {hello}; char str[] hello; // 当[]中的常量被省略时数组空间大小由初始化字符个数决定并自动在末尾添加\0。局部初始化char str[32] {h, e, l, l, o}; char str[32] {hello}; char str[32] hello; // 未初始化的部分默认存储0即\0字符。初始化为全0char str[32] {0}; char str[32] \0;4数组的存储形式单一性数组中的所有元素数据类型必须一致。有序性数组元素按照下标顺序a[0] 到 a[n]连续存储。连续性数组在内存中占用一段连续的空间。5字符型数组的输入输出输入char str[32] {0}; scanf(%s, str); // 遇到空格、Tab、回车会停止读入 gets(str); // 读取一行包括空格但不推荐使用存在缓冲区溢出风险输出char str[32] hello world!; printf(%s\n, str); // 遇到空格、Tab、回车会停止打印 puts(str); // 输出字符串并自动换行6字符型数组的操作方法strlen(str)计算字符串长度有效字符个数不包含结尾的\0。sizeof(str)求字符数组在内存中所占的字节数取决于数组声明时的大小。strcpy(dest, src)将源字符串拷贝到目标字符串。strcat(dest, src)将源字符串拼接到目标字符串的末尾。

相关新闻

HC毛发插件实战:游戏角色高效插片发型制作与优化

HC毛发插件实战:游戏角色高效插片发型制作与优化

1. 先搞清楚HC毛发插件到底解决什么实际问题如果你在3D角色建模,尤其是游戏角色头发制作时遇到过这些问题:手动一根根摆毛发片效率太低、毛发层次和动态感不好控制、想要实现次世代游戏里那种真实又性能友好的发型效果,那HC毛发插件值得先花半…

2026/7/30 6:19:40 阅读更多 →
终极Paradox游戏模组冲突解决方案:IronyModManager深度技术指南

终极Paradox游戏模组冲突解决方案:IronyModManager深度技术指南

终极Paradox游戏模组冲突解决方案:IronyModManager深度技术指南 【免费下载链接】IronyModManager Mod Manager for Paradox Games. Official Discord: https://discord.gg/t9JmY8KFrV 项目地址: https://gitcode.com/gh_mirrors/ir/IronyModManager IronyMo…

2026/7/30 6:19:40 阅读更多 →
深入理解Java字节码:javap工具核心功能与实战应用指南

深入理解Java字节码:javap工具核心功能与实战应用指南

1. 项目概述:为什么我们需要深入理解javap在Java开发的世界里,我们每天都在和.class文件打交道。这些由编译器生成的字节码文件,是JVM能够理解和执行的“中间语言”。大多数时候,我们信任编译器,写好.java源码&#xf…

2026/7/30 6:19:40 阅读更多 →

最新新闻

Go语言跨平台开发实战:从原理到部署

Go语言跨平台开发实战:从原理到部署

1. 为什么Go语言天生适合跨平台开发 十年前我第一次尝试将一个Windows服务移植到Linux时,整整花了三周时间处理各种平台差异。如今用Go重写同样的功能,从Windows编译到Linux只需要在命令行加个参数。这种体验让我深刻理解了Go语言设计者对跨平台开发的深…

2026/7/30 6:25:43 阅读更多 →
Minecraft宝可梦插件部署实战:兼容性、性能与数据持久化指南

Minecraft宝可梦插件部署实战:兼容性、性能与数据持久化指南

这类能在《我的世界》里直接玩宝可梦对战、还带 Mega 进化、极巨化系统的插件,最吸引人的不是“能不能玩”,而是“在普通服务器环境里能不能稳定跑起来”。我实测过不少类似模组,很多问题出在版本兼容、资源占用和战斗系统冲突上,…

2026/7/30 6:25:43 阅读更多 →
Arduino TFT彩屏驱动与交互开发全攻略:从硬件选型到实战项目

Arduino TFT彩屏驱动与交互开发全攻略:从硬件选型到实战项目

1. 项目概述:为什么Arduino玩家需要一块TFT彩屏? 如果你玩Arduino有一段时间了,点亮过LED,驱动过舵机,也通过串口监视器看过数据,那你可能会开始觉得,那个黑白的、只能显示文本的串口窗口有点“…

2026/7/30 6:25:43 阅读更多 →
Simulink仿真:三相四桥臂逆变器PR控制应对不平衡负载

Simulink仿真:三相四桥臂逆变器PR控制应对不平衡负载

1. 项目概述:从三相三桥臂到四桥臂的跨越在离网型逆变器的设计领域,三相三桥臂结构长期以来是标准配置,它通过控制三个桥臂的开关状态,生成三路相位互差120度的交流电压,驱动三相负载。然而,这种经典结构存…

2026/7/30 6:25:42 阅读更多 →
深入解析C/C++ volatile关键字:从编译器优化到多线程安全的本质区别

深入解析C/C++ volatile关键字:从编译器优化到多线程安全的本质区别

1. 项目概述:为什么volatile在2024年依然是个“面试必挂题”?最近帮一个朋友复盘面试,他三年C开发经验,面一个中级岗位,技术面聊得挺好,最后被问到一个关于volatile关键字的问题,回答得模棱两可…

2026/7/30 6:25:42 阅读更多 →
基于机器学习的重庆市房价预测分析研究31234(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于机器学习的重庆市房价预测分析研究31234(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于机器学习的重庆市房价预测分析研究31234(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码 纯算法研究,没有前后端系统 主要技术: pythonpytorch 环境配置: anacondapycharm 操作系统: Windows10 开发工具: pycha…

2026/7/30 6:24:42 阅读更多 →

日新闻

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 您是否曾因Windows系统盘空间不足而烦恼?是否遇到过设…

2026/7/30 0:00:13 阅读更多 →
如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 你是否曾经在浏览…

2026/7/30 0:00:13 阅读更多 →
“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

更多请点击: https://intelliparadigm.com 第一章:AI 教师备课辅助 AI 教师备课辅助系统正逐步成为教育数字化转型的核心支撑工具,它并非替代教师,而是通过语义理解、知识图谱与多模态生成能力,将教师从重复性劳动中解…

2026/7/30 0:00:13 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/29 22:18:20 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/29 15:00:03 阅读更多 →

月新闻