零基础快速掌握——【c语言基础】数组的操作,冒泡排序,选择排序

1.数组

内存空间连续: 

2.定义格式

数组的定义格式:

数组分为一维数组、二维数组、以及多维数组,不同类型的数组定义格式时不一样

2.1 一维数组的定义

数据类型   数组名  [数组长度];
解释:
    数据类型:表示数组每一个成员的类型
    数组名:随便起,符合标识符命名规则即可
    数组长度这个数组有几个成员,可以是一个整型值,也可以是一个常量表达式
ex:
int arr[100];             //arr数组可以保存100个int类型的成员
char arr1[10];         //arr1数组可以保存10个char类型的成员

2.2 二维数组的定义

数据类型   数组名  [长度1]  [长度2];
解释:
        二维数组保存的成员个数长度1*长度2
        
int arr[3][2];/定义了一个二维数组,可以保存6个int类型的成员

2.3 数组定义注意事项  

数组的名字是一个指针常量数组名就代表数组空间的首地址

3.一维数组成员的访问

4.数组成员的初始化

4.1 全部初始化

在定义数组时为数组的每一个成员都进行赋值

数组类型 数组名[长度]={数值1,数值2,数值3.。。}

 4.2 部分初始化

定义数组时初始化其中前几个成员的数值,其他的成员不进行赋值.

当进行数组部分初始化时,没初始化的数组成员数值为0

4.3 数组特殊定义并初始化形式

数据类型 数组名[]={数值1,数值2,数值3,数值4.。。}

如果定义数组时在中括号中不加数组长度直接对数组进行初始化

那么数组的长度由后面初始化的数值个数决定

5.整型数组的一些常见操作

5.1 长度/均值/最值/逆序

5.2. 数组成员的查找

所谓数组成员的查找就是我们给一个要查找的值,在数组中查询这个值所在的位置

数组成员的查找方式分为存在型查找还有统计型查找:

5.2.1 存在型查找

在数组中找到这个数值后就停止查找,不关注后面还有没有

5.2.2 统计型查找

遍历整个数组,找到所有要查找到的数值

6.一维整型数组的排序

所谓排序指的是将大小不一的数组成员按照升序或者降序的形式进行重新组合

6.1 冒泡排序

概念以及规律

         在进行排序时从数组第一个位置开始让相邻两个成员进行比较,比较完毕后比较大的数据换到后面去,循环进行

解释:

如上图:我们有15个数组成员,那么我们需要比较15轮

第一轮:进行14次相邻成员的比较并进行交换,选择最大的数值放在最后一个位置

第二轮:进行13次相邻成员的比较并进行交换,选择第二大的数值放在倒数第二个位置

第三轮:进行12次相邻成员的比较并进行交换,选择第三大的数值放在倒数第三个位置

.....

根据上面的规律,我们想要进行比较,需要设置内外两层循环:

外层循环:用来标识比较的轮数,其实数组有几个成员就比较几轮

内层循环:用来标识本轮比较的次数,并循环内进行比较和交换

include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{int a[10];int i,t,j;int n=sizeof(a)/sizeof(int);for (i=0;i<n;i++){scanf("%d",&a[i]);}//10个比较9次for (i=0;i<n-1;i++){           //共执行n-1趟for(j=0;j<n-1-i;j++){if(a[j]>a[j+1]){       //冒泡排序  两两比较交t=a[j];     		// 1 2 3 4 5 6 7 8   9      10     na[j]=a[j+1];        // 0 1 2 3 4 5 6 7   8      9      ia[j+1]=t;           // 0 1             n-1-1    n-1}   					//			n-1-i}}for (i=0;i<n;i++){printf ("%d ",a[i]);}return 0;
}

6.2 简单选择排序

原理以及规律:

        默认选择数组第一个成员为最大值,让最大值和数组后面每一个成员进行大小比较,我们定义一个变量用于保存最大值成员的下标,比较完毕后确定最大值下标,将最大值和数组第一个成员进行数据交换。以此往复,再确定第二大、第三大。。。

选择出最小的值放到最小的位置

1> 选择排序是指,在剩余序列中,找到最大值(最小值),将其与待排序序列的第一个进行交换

2> 原理

1、从待排序序列中找到最值,将其标记

2、将标记后的最值跟待排序序列的第一个元素进行比较,如果不是待排序序列的第一个,则进行交换

3、从剩余序列中,重复前两步骤,直到待排序序列为空,则排序结束

解释:

如上图,总共有15个成员,我们要进行比较15轮

第一轮:

默认0下标位置数值最小,通过循环,让最小值和数组每一个成员进行比较,如果还有 比我们认为的最小值还小的成员,那么就改变最小值下标为当前成员下标

第一轮我们需要比较14次,一轮结束后,将最小成员和数组0位置成员进行数据交换

第二轮:假设1位置数据最小,将最小和后面成员进行比较,确定最小成员下标,将最小成 员和1位置进行交换

.......

根据上面的分析,我们需要比较若干轮,每一轮确定出升序成员中最小(最大值)

每一轮需要比较若干次

所以我们需要使用内外两层循环:

外层循环:设置我们比较的轮数,一轮结束后进行数值交换

内存循环:设置这一轮比较的次数,确定出最小(最大)数值的下标

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{int arr[]={1,2,3,4,5,6,7,8,9,4,5,6,6,7,7,9};int len=sizeof(arr)/sizeof(int);int i ,j;int temp;int min;for (i=0;i<len;i++){min=i;for (j=i+1;j<len;j++){if (arr[min]>arr[j]){min=j;}}temp=arr[i];arr[i]=arr[min];arr[min]=temp;}for (i=0;i<len;i++){printf("%d",arr[i]);}putchar(10);return 0;
}

二维数组→零基础快速掌握——c语言基础【二维数组】-CSDN博客

练习:

一个小组有六名学生,要求定义一个数组存储该六名学生的成绩,完成对这些学生成绩的录入

输出所有学生分数 。输出最大值,最小值,平均分,总合,逆序排列。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{int a[6];int i,max=0,min=0,sum=0,ave=0;int n=sizeof(a)/sizeof(int);int t;//逆序交换的中间变量printf("n=%d",n);for (i=0;i<n;i++){scanf("%d",&a[i]);  //输入6个成绩}for (i=0;i<n;i++){printf("学生%d:%d ",i+1,a[i]);printf("\n");}for (i=0;i<n;i++){sum+=a[i];     //求和ave=sum/n;     //求平均值}                     //初始max=0for (i=1;i<n;i++){   //打擂台法,求最大最小值if (a[max]<a[i]){max=i;}if (a[min]>a[i]){min=i;}}printf("max=%d ",a[max]);printf("min=%d ",a[min]);printf("sum=%d ",sum);printf("ave=%d ",ave);for (i=0;i<n/2;i++){  //逆序排列   n/2交换次数t=a[i];a[i]=a[n-1-i];    a[n-1-i]=t;}for(i=0;i<n;i++){ //逆序输出printf("%d",a[i]);}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/483386.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot3.4.0和OpenFeign4.1.4不兼容

SpringBoot3.4.0和OpenFeign4.1.4不兼容 SpringBoot升级到3.4.0版本&#xff0c;和OpenFeign不兼容&#xff0c;maven install 时报错&#xff0c;即使OpenFeign升到最新版本4.1.4&#xff0c;依然不兼容。 SpringBoot版本降为3.3.6 &#xff0c;maven install 成功。 创建日…

PyTorch|彩色图片识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、 前期准备 1. 设置GPU 如果设备上支持GPU就使用GPU,否则使用CPU import torch import torch.nn as nn import torchvision.transforms as transforms i…

【Linux】应用层协议—HTTP

一、HTTP协议介绍 请求-响应模型&#xff1a;HTTP (Hyper Text Transfer Protocol) 协议是基于请求和响应的。客户端&#xff08;如Web浏览器&#xff09;发送一个HTTP请求到服务器&#xff0c;服务器处理请求后返回一个HTTP响应。 无状态&#xff0c;无连接协议&#xff1a;H…

消息中间件-Kafka1-实现原理

消息中间件-Kafka 一、kafka简介 1、概念 Kafka是最初由Linkedin公司开发&#xff0c;是一个分布式、支持分区&#xff08;partition&#xff09;、多副本的&#xff08;replica&#xff09;&#xff0c;基于zookeeper协调的分布式消息系统&#xff0c;它的最大的特性就是可以…

【Spring】Spring IOCDI:架构旋律中的“依赖交响”与“控制华章”

前言 &#x1f31f;&#x1f31f;本期讲解关于Spring IOC&DI的详细介绍~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 &#x1f386;那么…

44 基于32单片机的博物馆安全监控系统设计

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 检测 分别是温湿度 光照 PM2.5、烟雾、红外&#xff0c;然后用OLED屏幕显示&#xff0c; 红外超过阈值则蜂鸣器报警&#xff0c;这是防盗报警&#xff1b;温度或烟雾超过阈值&#xff0c;则蜂鸣器…

VScode离线下载扩展安装

在使用VScode下在扩展插件时&#xff0c;返现VScode搜索不到插件&#xff0c;网上搜了好多方法&#xff0c;都不是常规操作&#xff0c;解决起来十分麻烦&#xff0c;可以利用离线下载安装的方式安装插件&#xff01;亲测有效&#xff01;&#xff01;&#xff01; 1.找到VScod…

文生视频、图生视频 AI 大模型开源项目介绍【持续更新】

Open-Sora 介绍&#xff1a;Open-Sora是一个由北京大学和兔展科研团队推出的开源项目&#xff0c;旨在推动视频生成技术的发展。Open-Sora致力于高效制作高质量视频&#xff0c;通过开源原则&#xff0c;使高级视频生成技术变得民主化&#xff0c;并提供一个简化且用户友好的平…

Burp Suite 实战指南:Proxy 捕获与修改流量、HTTP History 筛选与分析

声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&a…

基于Vue实现的移动端手机商城项目 电商购物网站 成品源码

&#x1f4c2;文章目录 一、&#x1f4d4;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站演示 &#x1f4f8;部分截图 &#x1f3ac;视频演示 五、⚙️网站代码 &#x1f9f1;项目结构 &#x1f492;vue代码预览 六、&#x1f527;完整…

.NET 9 中 LINQ 新增功能实现过程

本文介绍了.NET 9中LINQ新增功能&#xff0c;包括CountBy、AggregateBy和Index方法,并提供了相关代码示例和输出结果&#xff0c;感兴趣的朋友跟随我一起看看吧 LINQ 介绍 语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称。 数据查询历来都表示为简单的…

yarn install遇到问题处理

1、Yarn在尝试安装一个依赖项时遇到了问题。具体来说&#xff0c;这个错误指出期望提升&#xff08;hoist&#xff09;的包的manifest文件丢失了&#xff0c;这通常是因为缓存中的数据损坏或不一致所致。 解决方法&#xff1a;有以下两种 1、清除Yarn缓存&#xff1a;运行 yarn…

遇到问题:hive中的数据库和sparksql 操作的数据库不是同一个。

遇到的问题&#xff1a; 1、hive中的数据库和sparksql 操作的数据库不同步。 观察上面的数据库看是否同步 &#xff01;&#xff01;&#xff01; 2、查询服务器中MySQL中hive的数据库&#xff0c;发现创建的位置没有在hdfs上&#xff0c;而是在本地。 这个错误产生的原因是&…

大数据-240 离线数仓 - 广告业务 测试 ADS层数据加载 DataX数据导出到 MySQL

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; Java篇开始了&#xff01; 目前开始更新 MyBatis&#xff0c;一起深入浅出&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff0…

计算机网络-网络安全

网络安全介绍 端口扫描 安全包括那些方面&#xff1a; 数据存储安全、应用程序安全、操作系统安全、网络安全、物理安全、用户安全教育 一、网络安全问题概述 1. 计算机网络面临的安全性威胁 计算机网络上的通信面临以下的四种威胁&#xff1a; 截获——从网络上窃听他人…

linux 获取公网流量 tcpdump + python + C++

前言 需求为&#xff0c;统计linux上得上下行公网流量&#xff0c;常规得命令如iftop 、sar、ifstat、nload等只能获取流量得大小&#xff0c;不能区分公私网&#xff0c;所以需要通过抓取网络包并排除私网段才能拿到公网流量。下面提供了一些有效得解决思路&#xff0c;提供了…

【CSS in Depth 2 精译_066】11.2 颜色的定义(上)

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第四部分 视觉增强技术 ✔️【第 11 章 颜色与对比】 ✔️ 11.1 通过对比进行交流 11.1.1 模式的建立11.1.2 还原设计稿 11.2 颜色的定义 ✔️ 11.2.1 色域与色彩空间11.2.2 深入理解颜色表示法 文…

论文导读 I RAFT:使语言模型适应特定领域的RAG

摘要 随着大语言模型&#xff08;LLMs&#xff09;的发展&#xff0c;这些模型在广泛的任务中展现出了卓越的性能。然而&#xff0c;当这些模型应用于特定领域时&#xff0c;如何有效融入新信息仍然是一个未解决的问题。本文提出了检索增强微调&#xff08;RAFT&#xff09;&a…

华为HarmonyOS 让应用快速拥有账号能力 -- 2 获取用户头像昵称

场景介绍 如应用需要完善用户头像昵称信息&#xff0c;可使用Account Kit提供的头像昵称授权能力&#xff0c;用户允许应用获取头像昵称后&#xff0c;可快速完成个人信息填写。以下只针对Account kit提供的头像昵称授权能力进行介绍&#xff0c;若要获取头像还可通过场景化控…

高校数字化运营平台解决方案:构建统一的服务大厅、业务平台、办公平台,助力打造智慧校园

教育数字化是建设教育强国的重要基础&#xff0c;利用技术和数据助推高校管理转型&#xff0c;从而更好地支撑教学业务开展。 近年来&#xff0c;国家多次发布政策&#xff0c;驱动教育行业的数字化转型。《“十四五”国家信息化规划》&#xff0c;推进信息技术、智能技术与教育…