玩转数据结构(01)--数组

本文介绍了数据结构的分类,重点讲解了数组的概念、优缺点、操作示例,包括添加、查询、修改和删除元素,并探讨了泛型在数组中的应用,帮助初学者掌握数组这一基础数据结构。
摘要由CSDN通过智能技术生成

一、数据结构分类:

1.线性结构:数组、栈、队列、链表、哈希表...

2.树结构:二叉树、二分搜索树、AVL、红黑树、Treap、Splay、、Trie、线段树、K-D树、并查集、哈夫曼树...

3.图结构:邻接矩阵、邻接表

二、数组

1.定义:把数据码成一排进行存放

2.图解:

3.示例代码  Main.java

public class Main {

    public static void main(String[] args) {

        int[] arr = new int[10];  //声明数组
        for(int i = 0 ; i < arr.length ; i ++)
            arr[i] = i;

        int[] scores = new int[]{100, 99, 66};//声明数组并赋值
        for(int i = 0 ; i < scores.length ; i ++)
            System.out.println(scores[i]);//通过索引访问的方式来访问数组的变量

        for(int score: scores)  //数组具有可遍历的特性
            System.out.println(score);

        scores[0] = 96;  通过索引访问的方式来修改数组的变量

        for(int i = 0 ; i < scores.length ; i ++)
            System.out.println(scores[i]);
    }
}

输出:

4.数组基础

数组优点:快速查询;

索引可以用语义,也可以没有语义;数组最好应用于“索引有语义”的情况;

但并非所有有语义的索引都适用于数组;例: 身份证号就不适合,占用空间太大;

数组也可以处理 “索引没有语义 ”的情况;主要讨论该情况下数组的使用;

5.二次封装自己的数组

(Java 自身的数组是静态数组,不具有对内存空间增、删、改、查功能;故二次分装自己的内存,为动态数组

例图:

自己的数组类: Array

data:数组名称

size:数组中实际装入元素的长度

capacity:数组定义的长度(容量)

代码示例:Array.java

public class Array {

    private int[] data;	//定义int 型数组 data
    private int size;	//data数组中有效元素的数量

    // 构造函数,传入数组的容量capacity构造Array
    public Array(int capacity){
        data = new int[capacity];
        size = 0;
    }

    // 无参数的构造函数,默认数组的容量capacity=10
    public Array(){
        this(10);
    }

    // 获取数组的容量
    public int getCapacity(){
        return data.length;
    }

    // 获取数组中的元素个数
    public int getSize(){
        return size;
    }

    // 返回数组是否为空
    public boolean isEmpty(){
        return size == 0;
    }
}

6.向数组中添加元素

向数组末添加元素:赋值给data[size],然后 size+1(右移即可)

向指定位置添加元素:将索引为1的值及后面的值都向后移动;先将 size-1 的元素移动到size上,直到将值放入 1 中,最后 size+1

移动100

插入到 1 的位置

示例代码:Array.java

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值