当前位置: 首页 > article >正文

数组1 day7

六:数组

一:数据类型

1.int a[10] //想要知道一个标识符对应的数据类型,去掉标识符,剩下就是它对应的数据类型

​ //eg:a所谓代表的类型,就是int[10]这种类型(是一个数组,包含10个int型变量的数组)

2.数组特点:1.连续性:开辟的是一片连续空间 2.有序性:元素是按照顺序存储的 3.单一性:数据类型是单一性

​ 引用数组元素:a [偏移量] //[ ]表示数组下标的运算 偏移量:相对第一个元素的位置

​ 下标的范围 //0~N-1

	int a[10] = {1,2,3,4,5,6,7,8,9,10};for(int i=0;i<10;i++){printf("a[%d] = %d\n",a[i],a[i]);}

3.数组的给值 int a[10] = {1,2,3,4,5,6,7,8,9,10} //全部初始化

int a[10] = {1,2,3,4,5} //部分初始化,挨个给到前面的元素,后面补零

int a[10] = {0}int a[10] = { } //全是零 int a[10] //没有初始化,随机给值

int a[10] = {1,2,3,4,5} //定义时,数组长度省略,对应初始化的值即是实际数组长度

可变数组给值 //此时不能初始化

	int n;scanf("%d",&n);int a[n] ;//不能初始化printf("sizeof(a) = %ld\n",sizeof(a));

二:判断数组长度

int a[] = {1,2,3,4,5,6};
int len = sizeof(a)/sizeof(int);

三:赋值

1.赋值问题(不能整体赋值) //能赋值的是数组中的单个元素

	int a[10];a = {1,2,3,4,5,6};//不可以a[0] = 1;//可以

2.通过scanf 手动赋值

	int a[10];int len = sizeof(a)/sizeof(int);int i = 0;for(i=0;i<len;i++){scanf("%d",&a[i]);//每个都要手动输入,系统不自动补零}for(i=0;i<len;++i){printf("a[%d] = %d\n",i,a[i]);}

四:寻找数组中的最大值

int a[10];
int i = 0;for(i=0;i<10;++i)
{scanf("%d",&a[i]);
}int max = a[0];
for(i=1;i<10;i++)
{if(a[i] > max){max = a[i];}
}int second = 0x80000000;//要把second设为范围的最小值		1000 0000
for(i=1;i<10;i++)
{if(a[i] > second && a[i] != max){second = a[i];}
}printf("max =%d\n",max);
printf("second =%d\n",second);

五:数组逆序

	int a[10] = {1,2,3,4,5,6,7,8,9,10};int len = sizeof(a)/sizeof(int);int t = 0;for(int i=0;i<len;i++){printf("%d ",a[i]);}putchar('\n');for(int i=0;i<len/2;i++){t = a[len-i-1];a[len-i-1] = a[i];a[i] = t;}for(int i=0;i<len;i++){printf("%d ",a[i]);}putchar('\n');
	int i = 0;//同上int j = len - 1;for(;i<j;){t = a[i];a[i] = a[j];a[j] = t;++i;--j;}

七:数组排序

一:选择排序

给合适的位置选择合适的数

本质上就是当前位置与此后的所有位置上的数值比较,外层循环走完一趟,即此位置与其他位置的数值比较完成,定位这趟的最小值或最大值,此后的每一趟,之前定位的数值就可以不用比较,具体看升序还是降序,以此类推。

	int a[10] = {7,9,5,4,3,8,1,6,2,10};int len = sizeof(a)/sizeof(int);int t = 0;int i = 0;int j = 0;for(i=0;i<len;i++){printf("%d ",a[i]);}putchar('\n');for(i= 0;i<len-1;i++)//控制当前位置{for(j = i+1;j<len;j++)//控制当前位置寻找最小值的过程{if(a[j] < a[i]){t = a[i];a[i] = a[j];a[j] = t;}}}for(int i=0;i<len;i++){printf("%d ",a[i]);}putchar('\n');

二:冒泡排序

相邻两个元素,两两比较,小的在前,大的在后

//本质就是走一趟,在这一趟中两两比较(交叉向后),最后每一趟的最大值留在最后,此后循环一趟,但是由于上一趟最大值已经定位,所以这一趟的比较次数会减少一次,以此类推

	for(i=1;i<len;++i)//控制趟数{for(int j=0;j<len-i;j++)//控制一趟比较的次数{if(a[j] > a[j+1]){t = a[j];a[j] = a[j+1];a[j+1] = t;}}}
http://www.lryc.cn/news/2399294.html

相关文章:

  • SAP学习笔记 - 开发15 - 前端Fiori开发 Boostrap,Controls,MVC(Model,View,Controller),Modules
  • Redis中的过期策略与内存淘汰策略
  • 基于SDN环境下的DDoS异常攻击的检测与缓解
  • HarmonyOS 实战:给笔记应用加防截图水印
  • 如何轻松地将文件从 PC 传输到 iPhone?
  • 前端面试二之运算符与表达式
  • 【运维实战】使用Nvm配置多Node.js环境!
  • Bresenham算法
  • 【从GEO数据库批量下载数据】
  • day 44
  • 鸿蒙OSUniApp开发跨平台AR扫描识别应用:HarmonyOS实践指南#三方框架 #Uniapp
  • NER实践总结,记录一下自己实践遇到的各种问题。
  • 微信小程序实现运动能耗计算
  • iTunes 无法备份 iPhone:10 种解决方法
  • 施耐德特价型号伺服电机VIA0703D31A1022、常见故障
  • LangChain4J 使用实践
  • 慢SQL调优(二):大表查询
  • 【C++】—— 从零开始封装 Map 与 Set:实现与优化
  • 内网穿透之Linux版客户端安装(神卓互联)
  • 开疆智能Profinet转Profibus网关连接CMDF5-8ADe分布式IO配置案例
  • 华为云Flexus+DeepSeek征文|Flexus云服务器单机部署+CCE容器高可用部署快速搭建生产级的生成式AI应用
  • 扫地机产品--材质传感器算法开发与虚拟示波器
  • [蓝桥杯]上三角方阵
  • 60天python训练计划----day44
  • 【JAVA版】意象CRM客户关系管理系统+uniapp全开源
  • API异常信息如何实时发送到钉钉
  • Python爬虫(48)基于Scrapy-Redis与深度强化学习的智能分布式爬虫架构设计与实践
  • AtCoder Beginner Contest 407 E - Most Valuable Parentheses
  • (1-6-3)Java 多线程
  • java31