前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据结构&算法之数组篇

数据结构&算法之数组篇

作者头像
村雨遥
发布2020-07-02 22:44:28
3150
发布2020-07-02 22:44:28
举报
文章被收录于专栏:JavaParkJavaPark

1. 数组简介

数组(Array)是一种 线性表(将数据排成一条线一样的结构) 数据结构,用一组 连续内存空间 来存储一组具有 相同类型 的数据。

2. 数组的常见操作

数组最常见的操作无非增删改差,下面分别来对各个操作进行介绍,假设数组类的定义如下:

代码语言:javascript
复制
public class Array{
    // 用于保存数据
    public int data[];
    // 数组长度
    private int size;
    // 数组中实际元素个数
    private int count;
}

2.1 按照下标随机访问操作

要实现随机访问,那么需要先看访问的下标位置是否合法,不合法则访问失败,合法则放回当前位置元素。

代码语言:javascript
复制
// 根据下标找到数组中的元素并返回
public int find(int index){
    // 下标小于 0 或者超出当前数组元素个数,访问不合法
    if(index < 0 || index >= count){
        return -1;
    }

    // 位置合法直接返回访问位置的值
    return data[index];
}

2.2 数组的插入

要实现数组的插入,通常有如下步骤:

  1. 先要判断数组是否已满,满了自然插入不了,只有当数组还没满时才能插入;
  2. 而当数组未满时,也需要判断插入位置是否合法,不合法肯定会失败,合法时才能够进行正常插入;
  3. 当数组未满同时插入位置合法时,我们只需要将插入位置后的元素整体向后移动一位即可;
  4. 同时在要插入的位置处插入要插入的值,同时将数组元素个数加一。
代码语言:javascript
复制
// 向数组中插入元素
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 数组的删除

要实现数组的删除操作,通常有如下步骤:

  1. 判断要删除的位置是否合法,不合法删除失败,合法才能进行下一步从操作;
  2. 删除位置合法时,需要将删除位置后的元素整体向前移动一位,同时数组中的元素数目减一。
代码语言:javascript
复制
// 从数组中删除元素
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 数组的更新

所谓数组更新,只要位置合法,只需要将对应索引位置赋值为新的值即可。

代码语言:javascript
复制
// 数组更新
public boolean update(int index, int value){
    if(index < 0 || index >= count){
        System.out.println("位置不合法,更新失败")
        return false;
    }

    // 直接将索引位置的赋值为新的值即可
    data[index] = value;
    return true;
}

3. 总结

对于数组这一数据结构,其最常见的操作无非上边所描述的四种,当然我举例都是用的 int 数据类型的值。如果你想用其他数据类型的数组,有了上面的实例,迁移过去不是分分钟的事情么!???

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 村雨遥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 数组简介
  • 2. 数组的常见操作
    • 2.1 按照下标随机访问操作
      • 2.2 数组的插入
        • 2.3 数组的删除
          • 2.4 数组的更新
          • 3. 总结
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档