4.22 一维数组

 

  • 一维数组
    • 定义
      数组类型 数组名[元素个数]
    • 元素访问
      数组名[元素下标]访问元素
      元素下标:常量变量,常量变量表达式
      下标从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;

        }

        }

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值