数组
一维数组的定义和引用
定义方式:
类型说明符 数组名[常量表达式]
如:float s[10000];数组名符合标识符的一般规则,常量表达式表示该数组的个数,类型可为已有的除void(空类型)所有的数据类型,常量表达式必须为整型常量(至少为1)
一维数组元素的使用:
表示方法:
数组名[下标]
[] 下标运算符 定义的方括号(int a[10])为类型说明符,仅仅说明a为数组,不是下表运算符
去掉变量名,剩下类型名(sizeof(a) = sizeof(int [10]))
数组不得整体赋值
原因:
a = i 类型不匹配
a = 100 a中有10个变量
数组的数组名代表数组的首元素地址(地址值常量),所以不能作为左值
单一性:数组当中所有元素所占的字节数都相同
有序性:下标小的元素一定在下标大的元素的(内存中)前面
连续性:数组中的所有数组地址都连续,没有间隔
数组越界访问:
a[10] 访问了数组之外的地址,修改了不需要修改的地址
初始化列表(a[10] = {1,2,...})的元素大于数组个数,越界访问
初始化列表的元素小于数组个数,未赋值的都为0
变量元素表示数组个数,不允许初始化
元素个数可被省略(a[] = {1,2,3})
计算数组元素个数:
int len = sizeof(a) / sizeof(a[0]);
逆序:
选择排序算法:
在数组合适的位置上放上合适的数
升序:
算法复杂度: O(n) = n ^ 2
空间复杂度:1
冒泡排序算法:
相邻两个元素两两比较,小的放前,大的放后
算法复杂度:O(n) = n ^ 2
插入法排序:
算法复杂度:
最好情况(顺序):O(n)= n ^ 2
最惨情况(倒序):O(n)= n ^ 2
原地插入:
-----------------------------
嵌入式学习第7天,也是第二周的第一天,今天学习了一维数组和关于一维数组的几种排序问题。强度明显比第一周大了很多,数组的排序问题将数组与循环结构结合起来,需要细心再细心,同时也要熟悉记忆并掌握这几种常见的排序问题,分析其原理和底层逻辑,便于理解应用。
后面的挑战还会越来越难,必须打起12分的精神了,继续加油!