一维数组的定义和引用
类型名 数组名[整型常量表达式]
数组名即标识符,要满足标识符的使用规则
[ ] 里面最少是1
float s[100]; 100个单精度浮点型变量
void 空类型 不能创建任何变量,包括数组
a[i] 数组里面第 i 个元素的值
int a[10] 定义这行 [ ] 是类型说明符,不是下标运算符
数组元素在内存中存储的三大特性:
单一性、有序性、连续性
对数组的访问: int a[10]
从a[0]开始
数组的越界访问:a[-1] 可能会占用其他变量的空间,造成严重错误
数组不得整体引用:
a = 10 ; ❌ a等价于&a[0]
左右两边类型不匹配
去掉变量名,只剩变量名
数组的数组名为地址
初始化:初始化列表里个数小于等于元素个数
int a[10] = {1,2,3} ;
1 2 3 0 0 0 0 0 0 0
int a[10] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
会造成越界访问,不能超过元素的个数。
求元素的个数:可以用数组总的字节数 / 每个元素的字节数
int length = sizeof(a) / sizeof(a[0]);
int 整型 最小值 16进制 0x80000000
例题:求数组的最大值 求次大值
先求出最大值 在最大值的基础上再用for循环求次大值
排序的算法:冒泡排序、快速排序、选择排序、插入法排序
(没有特殊说明,默认排序为升序)
排序的目的:为了快速的查找
选择排序:在合适的位置上放上合适的数
假设共n个元素
次数:n-1 + n-2 + n-3 + ........+1
排序时间复杂度 算法复杂度 O(n)=n*n
逆序的算法复杂度:nlgn
冒泡排序:数组中相邻的两个元素两两比较,小的放前,大的放后
注意:程序中要体现出相邻元素比较
插入法排序:
注意:要把b数组的元素顺序拷贝到a数组
算法复杂度:n * n
空间复杂度也高
可以不用b数组
二分法查找:效率高