数组详解
原创大约 3 分钟数据结构与算法算法数组数据结构
数组详解
1. 数组简介
数组(Array)是一种 线性表(将数据排成一条线一样的结构) 数据结构,用一组 连续内存空间 来存储一组具有 相同类型 的数据。
2. 数组的常见操作
数组最常见的操作无非增删改差,下面分别来对各个操作进行介绍,假设数组类的定义如下:
public class Array{
// 用于保存数据
public int data[];
// 数组长度
private int size;
// 数组中实际元素个数
private int count;
}
2.1 按照下标随机访问操作
要实现随机访问,那么需要先看访问的下标位置是否合法,不合法则访问失败,合法则放回当前位置元素。
// 根据下标找到数组中的元素并返回
public int find(int index){
// 下标小于 0 或者超出当前数组元素个数,访问不合法
if(index < 0 || index >= count){
return -1;
}
// 位置合法直接返回访问位置的值
return data[index];
}
2.2 数组的插入
要实现数组的插入,通常有如下步骤:
- 先要判断数组是否已满,满了自然插入不了,只有当数组还没满时才能插入;
- 而当数组未满时,也需要判断插入位置是否合法,不合法肯定会失败,合法时才能够进行正常插入;
- 当数组未满同时插入位置合法时,我们只需要将插入位置后的元素整体向后移动一位即可;
- 同时在要插入的位置处插入要插入的值,同时将数组元素个数加一。
// 向数组中插入元素
public boolean insert(int index, int value){
// 若数组已满,则插入失败
if(count == size){
System.out.println("数组已满");
return false;
}
// 若数组未满,则可以插入,但是需要考虑插入位置是否合法
// 位置不合法,插入失败
if(index < 0 || index > count){
System.out.println("插入数据位置不合法");
return false;
}
// 位置合法
for(int i = count; i > index; --i){
// 从插入位置后的数据,整体向后移一位
data[i] = data[i - 1];
}
// 将要插入的位置赋值为要插入的值,同时数组中的元素个数 +1
data[index] = value;
count += 1;
return true;
}
2.3 数组的删除
要实现数组的删除操作,通常有如下步骤:
- 判断要删除的位置是否合法,不合法删除失败,合法才能进行下一步从操作;
- 删除位置合法时,需要将删除位置后的元素整体向前移动一位,同时数组中的元素数目减一。
// 从数组中删除元素
public boolean delete(int index){
if(index < 0 || index >= count){
System.out.println("位置不合法,删除失败");
return falise;
}
// 将删除位置后的元素整体向前移动一位
for(int i = index + 1; i < count; ++i){
// 即 data[index - 1] = data[index + 1],往后以此类推
data[i - 1] = data[i];
}
// 删除后,数组元素数目减一
count -= 1;
return true;
}
2.4 数组的更新
所谓数组更新,只要位置合法,只需要将对应索引位置赋值为新的值即可。
// 数组更新
public boolean update(int index, int value){
if(index < 0 || index >= count){
System.out.println("位置不合法,更新失败")
return false;
}
// 直接将索引位置的赋值为新的值即可
data[index] = value;
return true;
}
3. 总结
对于数组这一数据结构,其最常见的操作无非上边所描述的四种,当然我举例都是用的 int
数据类型的值。如果你想用其他数据类型的数组,有了上面的实例,迁移过去不是分分钟的事情么!💯💯💯