嵌入式学习日记 7

发布时间:2024年01月24日

数组


零、题外话:linux中代码的快捷对齐方式


?? ?单行对齐:在命令模式下 按两下等号
?? ?多行对齐:shift+v选中 按一下等号
?? ?起始行 = 结束行
?? ?全局对齐:
?? ?gg = shift + g


一、数组概念:


?? ?一组相同类型的数据的集合
?? ?
?? ?要怎么一次性定义多个变量??? ?//本质上是 相同类型变量的集合
?? ?
?? ?一维数组
?? ?二维数组
?? ?整型 字符型
--------------------------------------
?? ?语法:?? ?//定义数组
?? ?类型说明符 数组名[常量表达式];
?? ?
?? ?(1).类型说明符
?? ??? ?整型
?? ??? ??? ?int,short,long,long long
?? ??? ?浮点
?? ??? ?字符
?? ?(2).数组名
?? ??? ?代表着 数据集合 (内存空间的一个名字)
?? ?(3).[]?? ?//表示此时定义的是一个 数组
?? ?(4).常量表达式
?? ??? ?表示数组的长度 --- 变量的个数
?? ?eg:
?? ?int array[5];?? ?//定义一个数组,这个数组放了5个 int 形变量
?? ?
?? ?数组本身也是一种数据类型
?? ??? ?类型 ---
?? ??? ?类型:
?? ??? ??? ?常量
?? ??? ??? ?变量
?? ??? ??? ?
?? ??? ??? ?大小
?? ??? ??? ?内存
?? ??? ??? ?
?? ??? ??? ?int a = 10;?? ?//a int型
?? ??? ??? ?int [10];?? ?//a所代表的类型 是
?? ??? ??? ?int[10]?? ?a;?? ?//a所代表的类型 int[10] (不能这么写)
?? ??? ??? ??? ??? ??? ?//a ---把名字去掉,剩下的就是名字对应的数据类型
?? ??? ??? ?int a[10];?? ?//数组在内存空间上的特点
?? ??? ??? ?a代表数组所在空间名字,数组首元素的地址编号
?? ??? ??? ?//数组的给值
?? ??? ??? ?//初始化
?? ??? ??? ?//赋值
?? ??? ??? ?int a[10] = {1,2,3,4,5,6,7,8,9,10};?? ?//{}表示初始化 花括号叫 初始化器
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?//全部初始化
?? ??? ??? ?//数组元素的访问
?? ??? ??? ?语法:
?? ??? ??? ?a[下标];?? ?//这里的下标是 从0 开始的 数组名中的标号是 从1 开始的
?? ??? ??? ?数组下标:
?? ??? ??? ??? ?本质上是 偏移量


?? ??? ??? ?
? ? ? ? ? ? 二、数组的特点:


?? ??? ??? ??? ?连续性 -- 占用一片连续空间
?? ??? ??? ??? ?有序性 -- 元素一次存储
?? ??? ??? ??? ?单一性 -- 单一(相同)类型的元素
?? ??? ??? ?a[i]?? ?//下标运算 --- 实际是一个地址的运算
?? ??? ??? ?下表本质上是一个偏移量
?? ??? ??? ?
?? ??? ??? ?数组的越界问题:
?? ??? ??? ?1.不是语法问题 --- 编译器不报错
?? ??? ??? ?2.程序员如何避免? --- 自己小心吧
?? ??? ??? ?
?? ?注意:
?? ??? ?a.数组名
?? ??? ??? ?代表的数据类型 -- int a[10];?? ?//a所代表的类型为int[10]?? ?//数组类型
?? ??? ??? ?代表的值?? ? ? -- 数组首元素的地址
?? ??? ?b.数组长度 与 下标
?? ??? ??? ?数组长度 -- 表示几个元素(变量)
?? ??? ??? ?下标 -- 偏移量
?? ??? ??? ??? ?[0~数组长度-1]
?? ??? ??? ?int a[10] = {1,2,3,4,5,6,7,8,9,10};//全部初始化
?? ??? ??? ?int a[10] = {1,2,3,4,5};?? ?//部分初始化 -- 依次给数组元素初始化 没有给值的元素 默认初始化为0
?? ??? ??? ?int a[10] = {};
?? ??? ??? ?int a[10] = {0};
?? ??? ??? ?
?? ??? ??? ?如果数组不初始化 --- 数组中为垃圾值
?? ??? ??? ?
?? ??? ?数组长度可以省略 但必须要有初始化的值
?? ??? ?int a[]={1,2,3}; //编译器会根据值来 计算 数组长度
?? ??? ?
?? ??? ?数组赋值 不能整体赋值 需要一个元素一个元素给到
?? ?练习:
?? ?准备一个数组 找最大值 次大值
?? ?


?? ?
? ?三、排序


?? ??? ?按一定的顺序排序
?? ??? ?
?? ??? ?升序 1 2 3 4
?? ??? ?降序 4 3 2 1
?? ??? ?
?? ??? ?1.选择排序:
?? ??? ?思想:
?? ??? ??? ?为合适的位置,选择一个合适的数;
?? ??? ??? ?
?? ??? ??? ?0 1 2 3 4 5 6 7?? ?//下标
?? ??? ??? ?1 5 3 6 8 7 2 4?? ?//数值


? ? ? 1. 选择排序法(非常关键说是

? ?for (i = 0; i < len-1; ++i) ?//位置 i = len-1 ?---控制位置
? ?{
?? ? ?//找最小值?
?? ? ? //i = 1;
?? ? ? for (j = i+1; j < len; ++j) //找数?
?? ? ? {
?? ??? ? ? if (a[j] < a[i])
?? ??? ? ? {
?? ??? ??? ? ?交换
?? ??? ? ? }
?? ? ? } ??
? ?}

主要思想:永远选最小数 放到最前面的位置

2.冒泡排序法(也非常关键
?

for(i=0;i<len-1;++i) ?
? ? ? ?{ ? ?
?? ? ? ? ?for(j=i+1;j<len;++j)
?? ? ? ? ?{
?? ? ? ? ? ? ?if(a[j]<a[i])?
?? ? ? ? ? ? {
?? ? ? ? ? ? ? ? ?mid = a[i];
?? ? ? ? ? ? ? ? a[i] = a[j];
?? ? ? ? ? ? ? ? ?a[j] = mid;
?? ? ? ? ? ? }
?? ? ? ?} ? ?
?? ?} ? ? ?

主要思想:两项比较 大的往后跑 一轮选出一个最大值 n-1轮就能全换对

文章来源:https://blog.csdn.net/tndqc/article/details/135757805
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。