文章目录
- 概念
- 存储原理
- 数组的操作
- 完整代码
概念
数组是(Array)是有限个相同类型的变量所组成的有序集合,数组中的每一个变量为称为元素。数组是最简单、最常用的数据结构。
数组下标从零开始。
存储原理
数组用一组连续的内存空间来存储一组具有相同类型的数据。
注: 灰色格子–被使用的内存; 橙色格子–空闲的内存; 红色格子–数组暂用的内存。
数组的操作
- 数组演示类:
package com.xxliao.datastructure.linerar_list.array;import javax.sql.XADataSource;
/**1. @author xxliao2. @description: 数据结构 - 线性表 - array3. 数组是(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("=====================");}
}
- 测试类
package com.xxliao.datastructure.linerar_list.array;/**1. @author xxliao2. @description: array test client3. @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();}
}
- 输出结构
数组尾部添加:
数组中间添加:
数组删除:
完整代码
https://github.com/xxliao100/datastructure_algorithms.git