Bootstrap

嵌入式day7

数组

一维数组的定义和引用

定义方式:

类型说明符 数组名[常量表达式]

如: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分的精神了,继续加油!

;