数据结构与算法之数组篇

简介: 数据结构与算法之数组篇

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 数组的删除

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

  1. 判断要删除的位置是否合法,不合法删除失败,合法才能进行下一步从操作;
  2. 删除位置合法时,需要将删除位置后的元素整体向前移动一位,同时数组中的元素数目减一。
// 从数组中删除元素
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 数据类型的值。如果你想用其他数据类型的数组,有了上面的实例,迁移过去不是分分钟的事情么!💯💯💯

目录
相关文章
|
11月前
|
存储 Java 程序员
数据结构之 - 深入了解数组数据结构
数据结构之 - 深入了解数组数据结构
155 6
|
11月前
|
算法
Leetcode 初级算法 --- 数组篇
Leetcode 初级算法 --- 数组篇
108 0
|
6月前
|
存储 监控 算法
关于员工上网监控系统中 PHP 关联数组算法的学术解析
在当代企业管理中,员工上网监控系统是维护信息安全和提升工作效率的关键工具。PHP 中的关联数组凭借其灵活的键值对存储方式,在记录员工网络活动、管理访问规则及分析上网行为等方面发挥重要作用。通过关联数组,系统能高效记录每位员工的上网历史,设定网站访问权限,并统计不同类型的网站访问频率,帮助企业洞察员工上网模式,发现潜在问题并采取相应管理措施,从而保障信息安全和提高工作效率。
90 7
|
7月前
|
存储 人工智能 算法
C 408—《数据结构》算法题基础篇—数组(通俗易懂)
408考研——《数据结构》算法题基础篇之数组。(408算法题的入门)
278 23
|
11月前
|
存储 算法 搜索推荐
探索常见数据结构:数组、链表、栈、队列、树和图
探索常见数据结构:数组、链表、栈、队列、树和图
342 64
|
10月前
|
存储 缓存 算法
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式,强调了合理选择数据结构的重要性,并通过案例分析展示了其在实际项目中的应用,旨在帮助读者提升编程能力。
278 5
|
10月前
|
存储 人工智能 算法
数据结构实验之C 语言的函数数组指针结构体知识
本实验旨在复习C语言中的函数、数组、指针、结构体与共用体等核心概念,并通过具体编程任务加深理解。任务包括输出100以内所有素数、逆序排列一维数组、查找二维数组中的鞍点、利用指针输出二维数组元素,以及使用结构体和共用体处理教师与学生信息。每个任务不仅强化了基本语法的应用,还涉及到了算法逻辑的设计与优化。实验结果显示,学生能够有效掌握并运用这些知识完成指定任务。
198 4
|
11月前
|
算法 程序员 索引
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
栈的基本概念、应用场景以及如何使用数组和单链表模拟栈,并展示了如何利用栈和中缀表达式实现一个综合计算器。
176 1
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
|
11月前
|
存储 算法 定位技术
数据结构与算法学习二、稀疏数组与队列,数组模拟队列,模拟环形队列
这篇文章主要介绍了稀疏数组和队列的概念、应用实例以及如何使用数组模拟队列和环形队列的实现方法。
127 0
数据结构与算法学习二、稀疏数组与队列,数组模拟队列,模拟环形队列
|
存储 算法 Java
深入算法基础二分查找数组
文章深入学习了二分查找算法的基础,通过实战例子详细解释了算法的逻辑流程,强调了确定合法搜索边界的重要性,并提供了Java语言的代码实现。
深入算法基础二分查找数组

热门文章

最新文章