Java实现数据结构---数组

概念

数组是(Array)是有限个相同类型的变量所组成的有序集合,数组中的每一个变量为称为元素。数组是最简单、最常用的数据结构。
在这里插入图片描述
数组下标从开始。

存储原理

数组用一组连续的内存空间来存储一组具有相同类型的数据。
在这里插入图片描述
注: 灰色格子–被使用的内存; 橙色格子–空闲的内存; 红色格子–数组暂用的内存。

数组的操作

  1. 数组演示类:
package com.xxliao.datastructure.linerar_list.array;

import javax.sql.XADataSource;
/**
 1. @author xxliao
 2. @description: 数据结构 - 线性表 - array
 3.  数组是(Array)是 有限个相同类型 的变量所组成的 有序 集合,数组中的每一个变量为称为元素。数组是最简单、最常用的数据结构。

 数组是用一组 连续的内存空间 来存储一组具有 相同类型 的数据。
 4.  5. @date 2024/5/27 22:50
 */
public class Array {

    // 定义数组
    int[] array = new int[10];

    // 定义计数器
    int count = 0;

    // 初始化,填充0-4空间的值
    public Array() {
        array[0] = 3;
        array[1] = 1;
        array[2] = 2;
        array[3] = 5;
        array[4] = 4;
        count = 5;
    }

    /**
     * @description  根据索引获取元组的值
     * @author  xxliao
     * @date  2024/5/28 11:35
     */
    public int get(int index) {
        return array[index];
    }

    /**
     * @description  修改元素
      index: 索引
      value: 值
     * @author  xxliao
     * @date  2024/5/28 11:36
     */
    public void update(int index, int value) {
        array[index] = value;
    }

    /**
     * @description  从数组尾部添加
     * @author  xxliao
     * @date  2024/5/28 11:38
     */
    public void insertTail(int value) {
        if(count >= array.length) { //判断是否扩容
            resize();
        }
        array[count++] = value;
    }

    /**
     * @description  从中间添加
     * @author  xxliao
     * @date  2024/5/28 11:42
     */
    public void insertMiddle(int index, int value) {
        if(count >= array.length) { // 判断是否扩容
            resize();
        }
        for (int i = array.length-1; i >= index; i--) {
            // 从尾部开始遍历,看是否有值,有值就移动。
            if (array[i] != 0) {
                array[i+1]=array[i];
            }
        }
        array[index]=value;
        count++;
    }

    /**
     * @description  扩容,增加一倍空间
     * @author  xxliao
     * @date  2024/5/28 11:45
     */
    public void resize(){
        int[] numsNew=new int[array.length*2];
        System.arraycopy(array,0,numsNew,0,array.length);
        array=numsNew;
    }

    /**
     * @description  删除元素,并移动
     * @author  xxliao
     * @date  2024/5/28 11:47
     */
    public void deleteMiddle(int index){
        for(int i=index+1;i<array.length;i++){
            array[i-1] = array[i];
        }
        count--;
    }

    /**
     * @description  遍历数组
     * @author  xxliao
     * @date  2024/5/28 11:48
     */
    public void display() {
        for (int value : array) {
            System.out.print(value+" ");
        }
        System.out.println("=====================");
    }

    /**
     * @description  遍历数组
     * @author  xxliao
     * @date  2024/5/28 11:48
     */
    public void display2() {
        for (int i = array.length - 1; i >= 0; i--) {
            System.out.print(array[i]+" ");
        }
        System.out.println("=====================");
    }
}
  1. 测试类
package com.xxliao.datastructure.linerar_list.array;

/**
 1. @author xxliao
 2. @description: array test client
 3. @date 2024/5/28 11:33
 */
public class TestClient {

    public static void main(String[] args) {
        Array array = new Array();
        array.display();

        // 测试尾部添加
        // for (int i = 0; i < 10; i++) {
        //   array.insertTail(i);
        // }

        // 测试中间添加
        array.insertMiddle(1,1000);

        // 测试删除
        //array.deleteMiddle(3);

        array.display();
    }
}
  1. 输出结构

数组尾部添加:
在这里插入图片描述

数组中间添加:
在这里插入图片描述
数组删除:
在这里插入图片描述

完整代码

https://github.com/xxliao100/datastructure_algorithms.git

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

骑车上酒吧

帮到了您,有闲钱,再打赏哦~

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

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

打赏作者

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

抵扣说明:

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

余额充值