C语言7-数组2-冒泡、选择排序、二维整型数组、一维字符型数组

autoDL算力云装Xinference[坑与步骤] 在页面直接点击下载会出现下着下载进度条消失,试了几次才出现这个报错,现在我们就继续安装缺少的包吧。这一步成功绕开了系统盘空间限制。先租用一个合适的服务器,建议不要选最新版本,跟我选的一样即可,不然后面会出现。最近在 AutoDL 上尝试部署。🚫 不要直接使用以下命令。点击下面链接即可打开。 阅读详情

摘要:本文介绍了数组排序算法和数组类型的基础知识。在排序算法部分,详细讲解了冒泡排序和选择排序的工作原理与实现方式:冒泡排序通过相邻元素比较交换实现排序,而选择排序通过每次选择最小元素交换位置实现排序。在数组类型部分,阐述了二维整型数组的存储形式、初始化方法及本质特征,以及一维字符型数组的初始化、元素访问、字符串打印和输入输出操作。特别说明了strlen和sizeof在字符串处理中的区别,并提供了相关示例代码。全文涵盖了数组操作的基础概念和实用技巧。

一、数组的排序

1、冒泡排序

(1)工作原理:是通过重复遍历待排序的数据序列,依次比较相邻元素,并根据需要交换它们的位置。这样,每次遍历都能确保至少一个元素移动到它最终应该在的位置上(对于升序排序来说,较大的元素会向序列末尾“沉”,较小的元素则会逐渐“浮”到前面)。这个过程类似于水中的气泡,小气泡逐渐上升至水面,大气泡则下沉到底部。

(2)实现方式:比较相邻的元素。如果第一个比第二个大(或者想降序排列时,第一个比第二个小),就交换他们两个。对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除了最后一个已经确定位置的元素外。重复步骤1~3,直到没有任何一对数字需要比较。

(3)图解:

(4)代码实现:利用两个for循环然后再利用 if 语句进行数据交换

(5)示例:利用冒泡排序实现对数组的排序

2、选择排序

(1)工作原理:选择排序是一种简单直观的比较排序算法,其核心思想是每次从未排序部分选出最小(或最大)元素,放到已排序部分的末尾。由于它在每一轮遍历中只进行一次交换,因此比冒泡排序更高效(交换次数更少)。

(2)实现方式:

  • 初始状态:整个数组被视为未排序部分
  • 查找最小值:在未排序部分中找到最小的元素;
  • 交换位置:将找到的最小元素与未排序部分的第一个元素交换位置;
  • 缩小范围:将已排序部分的边界向后移动一位,重复步骤2和3,直到整个数组有序。

(3)图解:

(4)代码实现:选择排序,通过比较选择出最小的数组放在最前面,依次进行。实现方式通过for循环加if语句选出最小值,更新交换数组的方式是用,元素下标法。

(5)示例:利用选择排序对数组进行排列                                   

二、二维整型数组

1、形式:     数据类型 数组名[行数][列数];

eg:a[2][3]: a[0][0] = 1;   a[0][1] = 2;  a[0][2] = 3;
                      a[1][0] = 4;   a[1][1] = 5;  a[1][2] = 6;
2、初始化:

  1. 全部初始化:a[2][3] = {1,2,3,4,5,6};
  2. 局部初始化:a[2][3] = {{0}};
  3. 默认初始化:int a[ ][3] = {{1,2},{3}};  //两列三行

3、存储:连续性、有序性

4、本质:二维数组是

三、一维字符型数组

1、形式:  char   str [元素个数];

元素个数必须为常量、必须注意存储空间(因为字符串末尾有'\0'结尾)。

2、元素访问:

  1. 元素下标的范围:0—元素个数-1;
  2. 元素下标可以是常量、变量、表达式;
  3. 数组只能对单个元素进行操作,不能对整个数组进行操作;

3、字符串打印:

  1. printf(%s):打印数组开头到 '\0' 中间的内容
  2. puts:打印数组开头到 '\0' 中间的内容,会多打一个 '\n'
  3. for循环:利用逻辑表达式
  4. 用法如图所示                                       

4、初始化:

(1)全部初始化:char str[6] = {'h', 'e', 'l', 'l', 'o', '\0'};

                               char str[6] = {"hello"}  ;

                               char str[6] = "hello";

(2)局部初始化:char str[6] = {'h', 'e', 'l', '\0'};

                               char str[6] = {0};

(3)默认初始化:char str[ ] = {'h', 'e', 'l', 'l', 'o', '\0'} ;

                               char str[ ] = {"hello"};

5、存储:连续性 、有序性

6、从终端接收字符串:

(1)scanf("%s", str);    只能接收不含 '空格' 的字符串

(2)gets(str);                可以接收带有 '空格' 的字符串,会报错但不影响

7、统计字符串长度:

(1)strlen:获得数组中字符串的长度与数组大小无关 ,使用前要加头文件

             #include <string.h>       //头文件

             strlen(str);     

(2)sizeof:获得数组所占字节空间大小(由数组定义时元素个数决定,与数组中存放的字符串
没有关系)                                                                                                                                                       sizeof(str);

8、示例如图所示

C++继承与多态 - 继承多态原理01 C++继承多态原理讲解 阅读详情

相关推荐

[ADS]单端电感和差分电感的感值和Q值计算公式

单端电感和差分电感的感值和Q值计算公式

乾巽的博客 1万+

C语言中整型数组

类型 数组名 [数组的长度]批量处理23 使用时不太关心数组长度4 0 ascii 码 就是‘ \0’

weixin_62636532的博客 1600

使用Matlab进行IEEE 33节点潮流计算的NR法实现详解及应用实例

IEEE 33节点系统是一个标准的配电系统模型,广泛用于学术研究和工程应用。该系统由33个节点和37条线路组成,结构复杂,具有代表性。其潮流计算结果可用于验证各种潮流计算方法的准确性和效率。NR法是一种基于迭代求解的潮流计算方法,通过不断迭代求解非线性方程组,直到达到预定的收敛条件。NR法具有收敛速度快、计算精度高的优点,适用于大规模复杂电力系统的潮流计算。

m0_57781768的博客 2070

C语言——数组和排序

2 小于 5,5往后移动四个字节把2覆盖掉,此时数组元素就是 5, 5, 10, 3, 9然后把temp赋值给a[0]此时数组元素就是2,5,10,3,9,然后拿第三个元素和前面的元素比较10大于5和2不用动,再拿第四个元素和前面的元素比较,3小于10,10往后移动,把3赋值给未移动前10的位置,3再和5比较3小于5,5往后移动把3赋给5移动前的位置,3再和2比较3大于2结束比较,最后的9和前面元素的比较的过程也是一样的如果比前一个元素小,前一个元素就往后移动直到大于前一个元素或者到数组首元素为止。

attitude_lu的博客 1511

SpringBoot与锐浪报表服务器深度整合实战指南

本文详细介绍了SpringBoot与锐浪报表服务器的深度整合实战指南,包括环境准备、Windows/Linux系统配置、核心功能实现代码解析及常见问题解决方案。通过具体案例和代码示例,帮助开发者高效完成报表系统的集成与部署,提升企业级应用的报表处理能力。

weixin_29238147的博客 369

2019年上交电院计算机直博保研经历

本人选报的是上交六月一日在武汉举办的直博选拔,五月三十一日到达酒店,地点在武汉大学旁边(PS:上交是不管住宿、来回车票的,~划重点~包括夏令营),入住后当然是紧张的准备英语面试等等内容了,当天我是排在了下午面试,感觉还很好,上午可以多睡一会,最好能够去踩踩点上午,然后下午面试一定要早去,说是一点开始,但是老师十二点半就开始让学生进去了,有一个同学排在第二个,但是当时叫到他时还不到一点,没到,最后据...

LifeMaker的博客 4892

c语言(6)—数组(2)

本文介绍了数组排序和数组操作的基本知识。第一部分讲解两种排序算法:冒泡排序通过两两比较交换实现升序排列,使用双层循环结构;选择排序通过选出最小值放在前面实现排序,同样采用双层循环实现。第二部分阐述二维数组的定义、初始化(包括全部、局部和默认初始化)、存储特性(连续有序)以及数据接收方法。第三部分介绍一维字符数组的定义、元素访问、字符串打印(printf和puts)、初始化方式(全部、局部和默认初始化)以及字符串接收函数(scanf和gets)的区别。最后比较了strlen和sizeof在字符串处理中的不同作

Childecool的博客 936

从零开始:手把手教你规划与部署华为FusionCompute虚拟化平台(含网络规划避坑指南)

本文详细介绍了华为FusionCompute虚拟化平台的规划与部署流程,特别针对网络规划中的常见问题提供了避坑指南。从硬件软件清单检查、网络平面配置到VRM部署方案选择,帮助用户高效完成部署并优化性能,适用于云计算环境中的虚拟化平台搭建。

weixin_28693447的博客 243

关于C语言7-数组(一维整数型数组和一维字符型数组)

1.定义:行数和列数必须为常量 exe: int a[2][3];没有给定初值的元素,默认初始化为0值(整数0、字符\0)1.冒泡排序(外层一次 里层一遍 用双层for循环)4.字符串的打印:字符串开头到\0中间字符的个数。关于整型一维数组的常用操作-----排序。6 字符串的赋值(一般通过从终端接收)1用途:C语言用字符型数组存储字符串。2 选择排序法(冒泡排序法)数组具有连续性和有序性。

m0_57137282的博客 442

9.23华为OD机试真题 新系统 - 世界杯徽章换购 (Java/Py/C/C++/Js/Go)

9.23华为OD机试真题 新系统 - 世界杯徽章换购 (Java/Py/C/C++/Js/Go)

算法大师! 1589

视觉Transformer实战 | 将卷积引入视觉Transformer(CvT)

CvT 是一种融合卷积神经网络与 Vision Transformer 优势的视觉模型,旨在解决 ViT 缺乏平移不变性和局部性等归纳偏置的问题。CvT 采用分层结构逐级降采样,使用卷积词元嵌入代替传统 patch 切分,引入卷积投影替代线性投影。这些设计使得 CvT 能够去除位置编码,在高分辨率输入下表现更优。本节深入解析 CvT 的核心原理,并提供完整的 PyTorch 代码实现,演示如何在实际数据集上训练和评估 CvT 模型。

盼小辉丶的博客 726

C语言7 - 数组定义

行数和列数必须为常量数据类型 数组名[行数][列数];使用字符型数组存储字符串元素个数必须为常量且必须能够存放的下字符串以及字符串末尾的'\0'字符。

2301_80286382的博客 959

【数据结构】期末考试复习(考点+例题)

1.线性表定义及其存储实现:顺序表和链接表,优缺点分析(顺序存储可随 机访问,链式存储可灵活利用空间),相关操作的时间复杂度。 2.链表的插入删除操作 3.两种特殊的线性表及其应用:栈、队列 4.栈、队列上的(插入/删除)操作及其特点 5.循环队列满和空的条件 6.能够定义线性表、栈、队列的数据存储结构,能够实现相关操作的算法并 分析时间复杂度(例如插入、删除及其它应用等) 7.理解线性结构的应用( 如根据要求能灵活定义线性表结构,能根据线性表 的插入、删除操作解决实际问题) 二叉树基本概念与性质(高

Molly 的博客 9367

c语言学习笔记:二维整型数组(二)、二维字符型数组、函数(一)。

二维数组定义及使用、函数的定义使用。

Ricky111zzz的博客 676

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

C语言-----数组

定义数组:类型说明符 + 数组名 + [常量表达式](1)类型说明符:这个数组要放的是哪一种类型的数据(2)数据名:标识符,名字符合标识符命名规则(3)[常量表达式]:数组的长度以及组成元素数组可分为:一维数组二维数组三位数组多维数组全部是初始化:全都给出值部分初始化:值优先给前面的元素,后面默认值是0不初始化:随机值初始化为0:int[10]={};数组长度可以省略,但是只能这样写:int a[]={1,2,3,4}数组的内存特点:1.连续性----连续空间。

2303_77197978的博客 640

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【C语言】数组的输入输出与排序

本文介绍了数组的基本概念和使用方法。主要内容包括:1.数组定义由类型说明符、数组名和常量组成,用于存储相同类型的数据;2.数组元素通过下标访问,需注意越界问题;3.数组初始化方式及注意事项;4.数组在内存中的存储特性(单一性、连续性、有序性);5.常见排序算法(选择排序、冒泡排序)及其特点;6.字符数组的特殊性,包括定义、初始化、输入输出及常用字符串处理函数(strlen、strcpy、strcat、strcmp)的使用。文章还特别强调了数组越界、初始化规则等注意事项。

weixin_62427201的博客 307

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

嵌入式培训之C语言学习(九)二维数组与二维字符型数组

1、定义形式:类型说明符 数组名[常量表达式1][常量表达式2];常量表达式1为行,常量表达式2为列;2、二维数组:按连续性、有序性、单一性存储在一起的一维数组;为三行四列的二维数组(3*4=12个整型元素)其中数组a只有3个元素(a[0] a[1] a[2]),每个元素为长度为4的一维整型数组;输出结果为48(数组a共占48个字节)4、数组的引用:数组名[下标1][下标2]下标1为元素所处行号,下标2为元素所处列号,行号与列号都是从0开始访问的,超过规定的取值范围会发生越界访问;

weixin_63557265的博客 472

C语言--数组

方式2 -- 部分初始化:int score[10] = {1,2,3,4,5};方式1 -- 初始化列表:int score[10] = {1,2,3,4,5,6,7,8,9,10};{} --- 初始化器。eg:int score[10]:表示定义了一个数组,这个数组中有10个元素,每个元素类型是int型。(1)数据类型:数组名 --可以代表数组这种数据类型,sizeof(arr) --- 整个数组的大小。(2)代表值:代表的是数组对应空间的起始地址,数组名所代表的地址为数组首元素对应的地址。

hc_bmxxf的博客 306

C语言(7)

strlen(s[]),可以直接计算出该字符串的长度。

2401_84729748的博客 640

二维数组、字符型二维数组

/ 可以存放5个字符串,每个字符串最长9个字符(留1个给'\0')(5个元素,每个元素是一个长度为10的字符数组)。每个str[i]就是一个一维字符数组,代表一个字符串。

zjh200206的博客 216

C语言数组1

定义:数据类型 数组名[元素个数]示例:int a[5]注意:元素个数必须是常量或常量表达式数据类型 数组名[元素个数]如:char str[32];注意:元素个数为常量,且要大于需存储字符串的字符个数。

2601_94905505的博客 370

嵌入式学习 第七天(C语言)

今天学习的主要是二维整型数组和一维字符型数组,这些都是C语言中常用到的。的意思是字符结束标志,再一维字符型数组中不要忘记给它一个位置来结束字符,否则可能会发生越界行为)数组元素存放顺序有序,先存第0行所有元素,再存第1行所有元素…元素个数必须能够存放的下字符串(注意必须能够存放下字符串末尾的。行数和列数必须是常量或常量表达式,不能是变量。数组只能对单个元素操作,不能对整体操作。:单引号引的字符,需要再手动打一个。没有给定初值的元素,默认初始化为。语言使用字符型数组存储字符串。语言使用字符型数组存储字符串。

weixin_72538799的博客 250

【C语言基础】04-数组(一维数组、二维数组、字符串常见操作)

char 数组名[元素个数]注意:元素个数必须为常量元素个数要能够存放下整个字符串(包含字符串末尾的 '\0' 字符)

2401_85663731的博客 496

【C语言4】数组

本文主要介绍了C语言中数组的相关知识,包括一维数组和二维数组的定义、初始化、存储特性以及常见操作。一维数组用于存储相同类型的多个数据,通过下标访问元素,支持选择排序和冒泡排序等算法。字符型数组用于存储字符串,介绍了其初始化和输入输出方法。二维数组则用于处理矩阵或多行数据,同样支持多种初始化方式。文章还强调了数组的越界问题和排序算法的稳定性,并提供了相关代码示例。适用于C语言初学者系统学习数组的使用。

2403_89702754的博客 474

深圳大学电信C语言 排序与直方图绘制程序(综合实验2)

一、实验目的 (1)进一步掌握C 语言中的选择结构、循环控制的编程方法;(2)学习C 语言中的数组定义和引用的编程方法; (3)理解和掌握冒泡排序法、选择排序法的基本原理,掌握其程序实现方法。 二、实验要求 本实验任务包括2 个部分,说明如下: 一、第一部分实验程序的具体要求如下: 1)在VC++中建立一个工程; 2)在程序开始的注释行中写上你自己的信息; 3)定义一个可以存放20个整型数元素的一维整型数组rArray,用随机数生成函数(参考基本实验6)生成20...

weixin_63762195的博客 1160

入门级 C语言期末复习(3)——数组

构造类型——数组 目录构造类型——数组一维数组一次循环插入数据一维数组两次循环统计不同数字的个数输出不同数字最近对问题选择排序冒泡排序二维数组主对角线上的元素之和鞍点 数组是我们遇到的第一个构造数据类型,是由若干个相同的基本类型组成的一个合集。这些合集在内存里是连续分布的。这个合集里的数据有一个共同的名字,称为数组名。 当你需要对若干个数据进行存储、操作的时候,就会用到数组。这里的数组是由同一种基本类型构造而来的,也就是说,我们可以得到整型数组,浮点型数组和字符型数组,实际上各种数据的使用上都是相似的,除了

weixin_53711329的博客 616
上一篇: C语言6-数组1-一维整型数组
下一篇: C语言8-数组3-一维字符型数组、二维字符型数组
DebugKitty
博客等级 码龄1年 196粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值