- 一维数组
- 定义
数组类型 数组名[元素个数]
- 元素访问
数组名[元素下标]访问元素
元素下标:常量变量,常量变量表达式
下标从0开始
- 数组初始化
- 全部初始化
int a[5] = {1, 2, 3, 4, 5};
- 局部初始化
int a[5] = {1, 2, 3};未给定初值即为0值
- 默认初始化
int a[] = {1, 2, 3,};
- 全部初始化
- 数组的存储
- 单一性
- 有序性
- 连续性
- 空间大小
数组空间大小 = 每个元素所占空间大小 * 元素个数
sizeof(a):数组所占空间大小
sizeof(a[0]):每个元素所占空间大小
元素个数:sizeof(a) / sizeof(a[0])
- 数组常见操作
- 获取最大最小值
从第二个数开始遍历,若a[i]比maxnum大,maxnum=a[i]
maxnum = a[0];
for(i = 1; i < len; i++)
{
if(a[i] > maxnum)
{
maxnum = a[i];
}
}
- 获取最大最小值下标
用max = 初始下标,用a[max]从第二个数开始遍历,若a[i]比a[max]大,max = i
max = 0;
for(i = 1; i < len; i++)
{
if(a[i] > a[max])
{
max = i;
}
}
- 数组元素的倒置
for(i = 0; i < len / 2; i++) //遍历前半部分,使对称位置数交换
{
tmp = a[i];
a[i] = a[len-1-i]; //与对称数交换,对称数:len-1(末尾元素下标)
a[len-1-i] = tmp;
}
- 冒泡排序
for(j = 0; j < len-1; j++) // 外层循环len - 1轮,来找到len-1个最大数,
最后一个即确定为最小,无需再循环
{
for(i = 0; i < len-1-j; i++) //内层让a[i]与除自己本身和已确定大小的数外的其他数进行比较,
来找到每轮最大数, 故为总数 - 自己本身 - 已确定的数,即除自己以外的数递减上限
if(a[i] > a[i+1]) //如果当前元素大于下一个元素,交换
{
tmp = a[i]; //临时保存当前元素
a[i] = a[i+1]; //下一个元素赋给当前元素
a[i+1] = tmp; //临时元素赋给下一个元素,完成交换
}
}
}
- 选择排序
for(j = 0; j < len-1; j++) //外层控制每轮循环的起始位置,假设min是起始那个数
{
min = j;
for(i = j + 1; i < len; i++) //内层从起始位置的下一个数开始,与后续每个数比较,直到数组末尾
{
if(a[i] < a[min]) //若后续有数比min小,把min换成它
{
min = i;
}
}
if(min != j) //内层选出该轮最小数min后,确保最小数不是该轮起始数本身,起始数j与最小数min交换
{
tmp = a[min];
a[min] = a[j];
a[j] = tmp;
}
}
- 获取最大最小值
- 定义