数据结构-数组

1.数组

数组是一种数据结构,可以把它想象成一个有序的盒子排列,每个盒子里都存放着一个数据元素。这些盒子都是相邻的,就像一排排的信箱。每个盒子有一个地址,我们可以通过这个地址找到并访问盒子里的内容。

数组中的每个盒子可以存储相同类型的数据,比如整数、小数、文字等。盒子的地址通常用一个编号(索引)表示,而且编号从0开始。这意味着,如果数组的第一个盒子编号是0,那么第二个就是1,第三个就是2,以此类推。

举个例子,如果有一个整数数组[5, 10, 15, 20, 25,30] ,这就像是一个有5个盒子的数组,每个盒子里存放着对应的整数。我们可以通过索引来访问数组中的元素,比如第三个盒子的索引是2,对应的值是15。

数组的好处是我们可以方便快捷地按照顺序存储和访问数据,就像找邮件一样,只要知道信箱的地址就能迅速找到邮件内容。这使得数组在程序中被广泛使用,因为能够高效地管理和操作数据。
在这里插入图片描述

2.数组的操作

2.1. 初始化数组

// 方法名:initArray
// 参数:数组大小
// 返回值:初始化后的数组
public static int[] initArray(int size) {
    // 创建一个大小为size的整数数组
    int[] array = new int[size];
    return array;
}

2.2. 访问元素

// 方法名:accessElement
// 参数:数组、索引
// 返回值:对应索引处的元素值
public static int accessElement(int[] array, int index) {
    // 返回数组中索引为index的元素值
    return array[index];
}

2.3. 插入元素

// 方法名:insertElement
// 参数:数组、索引、插入的元素
// 返回值:插入后的数组
public static int[] insertElement(int[] array, int index, int element) {
    // 创建一个新数组,大小比原数组大1
    int[] newArray = new int[array.length + 1];

    // 将原数组前index个元素复制到新数组中
    for (int i = 0; i < index; i++) {
        newArray[i] = array[i];
    }

    // 在新数组的index位置插入元素
    newArray[index] = element;

    // 将原数组index及以后的元素复制到新数组中
    for (int i = index + 1; i < newArray.length; i++) {
        newArray[i] = array[i - 1];
    }

    // 返回新数组
    return newArray;
}

2.4. 删除元素

// 方法名:deleteElement
// 参数:数组、索引
// 返回值:删除后的数组
public static int[] deleteElement(int[] array, int index) {
    // 创建一个新数组,大小比原数组小1
    int[] newArray = new int[array.length - 1];

    // 将原数组前index个元素复制到新数组中
    for (int i = 0; i < index; i++) {
        newArray[i] = array[i];
    }

    // 将原数组index后的元素复制到新数组中
    for (int i = index; i < newArray.length; i++) {
        newArray[i] = array[i + 1];
    }

    // 返回新数组
    return newArray;
}

2.5. 数组遍历

// 方法名:traverseArray
// 参数:数组
// 返回值:无
public static void traverseArray(int[] array) {
    // 遍历数组并打印每个元素值
    for (int i = 0; i < array.length; i++) {
        System.out.print(array[i] + " ");
    }
    System.out.println();
}

2.6. 查找元素

// 方法名:searchElement
// 参数:数组、目标元素
// 返回值:目标元素在数组中的索引,未找到返回-1
public static int searchElement(int[] array, int target) {
    // 遍历数组,查找目标元素
    for (int i = 0; i < array.length; i++) {
        if (array[i] == target) {
            return i;
        }
    }
    // 未找到目标元素,返回-1
    return -1;
}

2.7. 数组扩容

// 方法名:expandArray
// 参数:原数组、扩容大小
// 返回值:扩容后的数组
public static int[] expandArray(int[] array, int newSize) {
    // 创建一个新数组,大小为原数组大小加上扩容大小
    int[] newArray = new int[array.length + newSize];

    // 将原数组复制到新数组中
    for (int i = 0; i < array.length; i++) {
        newArray[i] = array[i];
    }

    // 返回新数组
    return newArray;
}

3. 数组的优点和缺点

优点:

  • 高效的随机访问,通过索引可以快速找到元素。
  • 连续的内存分配,提高了访问速度。

缺点:

  • 大小固定,无法动态调整。
  • 插入和删除操作可能涉及元素的移动,影响性能。

4. 数组的典型应用

数组在各种算法和数据结构中都有广泛应用,例如:

  • 存储和处理一维数据集合。
  • 矩阵运算。
  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

[猫玖]

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值