一、一维数组的定义、引用、初始化
1、定义
一次性定义多个变量。
形式:类型说明符 数组名【常量表达式】
其中的类型说明符不能是void类型,否则编译错误。常量表达式必须为整型,且不能为负,数组的元素个数>=1。定义数组时的方括号为类型说明符,不是下标运算符。
2、引用
形式:数组名【下标】
其中的方括号为下标符。
例:
3、初始化
形式:类型说明符 数组名【常量表达式】={初始化列表}
其中初始化列表(1)其个数大于数组元素个数时,报警,会越界访问。
(2)小于数组元素个数时,只赋值给前几个,后面的为0。
数组中的类型名:类型说明符 【常量表达式】
(即去掉变量名,剩下类型名) 例:int [a]
初始化时可省略常量表达式中的元素个数。
数组元素的存放具有三大性质:(1)单一性 (2)连续性 (3)有序性。
注意:(1)数组中不能写a = i。(1)类型不匹配,a为数组类型,i为整型;(2)a为数组的数组名,代表的是数组的首元素地址,a与a[0]的值相同;(3)a为常量,为右值,不能作为左值被赋值。
(2)可变的元素不能被初始化。
例如:int n = 10;int a[n] = { };
(3)坚决不能产生数组的越界访问。
例如:int a[10]; a[10] = 100; 但是该数组的元素只从a[0]到a[9]。
二、算法
1、极值
2、逆序
3、排序
(1)选择排序
在数组合适的位置上放上合适的数。 比较次数:(n*(n-1)d)/2
算法复杂度(最多执行的最高次项):O(n) = n^2。 可评判算法优劣。
空间复杂度:1。
(2)冒泡排序
相邻两个元素两两比较,小的放前,大的放后。( i 要通过 j 来限制其范围)
其中 i 每次重新比较,都比上一轮少一个。
(3)插入排序法
一种方法:可拷贝一个同样大小或者更大宽度的新数组,将原数组元素拿出来,按照有序放在新数组中。
另一种方法:可以不拷贝新数组,直接进行原地插入。