美文网首页
<<漫画算法>>--数据结构之数组

<<漫画算法>>--数据结构之数组

作者: erki_stwee | 来源:发表于2019-11-26 00:19 被阅读0次

大部分记录均来自小灰漫画算法

  • 什么是数组
    有限个相同变量组成的有序结合

  • 插入元素

    数组-插入元素.png
    数组扩容
    数组创建好之后长度是固定的。数组长度不够的时候需要人为扩容。再把旧的数组元素复制到新数组中。

插入元素插入后需要对数组下标进行调整;

  • 删除元素
    基本个插入元素都差不多,不过元素的当元素无序的时候,时间复杂度跟空间复杂度都为常数
    private int[] array;

    public MyArray(int capacity) {
        array = new int[capacity];
    }

    /**
     * 插入元素
     *
     * @param position:插入位置
     * @param element:插入元素
     */
    public void insert(int position, int element) {
        //判断异常情况
        if (array.length == 0) {
            return;
        }
        if (position < 0 || position > array.length) {
            throw new IndexOutOfBoundsException("超出數組范围");
        }

        //数组扩容
        while (position >= array.length - 1) {
            array = reSize(array);
        }
        //数组元素向后移动
        for (int i = array.length - 1; i > position; i--) {
            array[i] = array[i - 1];
        }
        //插入元素
        array[position] = element;
    }

    /**
     * 删除元素
     * @param position
     */
    public void delete(int position){
        //判断异常情况
        if (array.length == 0) {
            return;
        }
        if (position < 0 || position > array.length) {
            throw new IndexOutOfBoundsException("超出數組范围");
        }
        if(position == array.length - 1) {
            array[position] = 0;
        }else{
            for (int i = position ; i < array.length - 1; i++){
                array[i] = array[i + 1];
            }
        }
    }

    /**
     * 數組扩容
     *
     * @param originalArray
     * @return
     */
    public int[] reSize(int[] originalArray) {
        if (originalArray.length > 0) {
            int[] newArray = new int[originalArray.length * 2];
            //System.arraycopy:相当于在内存中新开辟了一块空间
            System.arraycopy(array, 0, newArray, 0, array.length);
            return newArray;
        }
        return null;
    }

    public void output() {
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
        }
    }

    public static void main(String[] args) {
        MyArray myArray = new MyArray(10);
        myArray.insert(9, 10);
        myArray.insert(9,1);
        myArray.output();
        System.out.println("===========================");
        myArray.delete(9);
        myArray.delete(9);
        myArray.output();
    }

根据上面代码可以知道,数组在添加跟更新数据上面效率远远大于删除和插入元素。

相关文章

  • 重温:数据结构与算法 - 03数组

    数据结构与算法之美 - 数组 数据结构与算法之美-学习大纲 什么数组? 数组是一种 线性表 数据结构。它用一组 连...

  • <<漫画算法>>--数据结构之数组

    大部分记录均来自小灰漫画算法 什么是数组有限个相同变量组成的有序结合 插入元素数组-插入元素.png数组扩容数组创...

  • Hash算法

    数据结构与算法分析:大纲数据结构:数组算法:hash算法算法:排序算法Java实现 1 Hash算法? 将任意长度...

  • 数据结构:数组

    00数据结构与算法分析:大纲01数据结构:数组02数据结构:链表03数据结构:栈03数据结构:队列 数组 数组是一...

  • JavaScript数据结构和算法简述——数组

    JavaScript数据结构和算法简述——数组

  • 数据结构与算法

    数据结构与算法之美 数据结构与算法之美1--如何学数据结构与算法之美2--复杂度分析(上)数据结构与算法之美3--...

  • 2019-07-19数据结构

    计算机本来没有算法先有编码,后有数据结构,然后有可算法 基础数据结构 数组 java 内置 顺序存储数组的缺点,...

  • 01.数据结构之数组篇

    文章为极客时间《数据结构与算法之美》的学习笔记。 什么是数组? 数组是一种线性表数据结构。它用一组连续的内存空间,...

  • Swift 实现 7 种常见的排序算法

    排序算法可以说是数据结构与算法当中最为基础的部分,针对的是数组这一数据结构。将数组中的无序数据元素通过算法整理为有...

  • 跳表原理

    数据结构和算法之——跳表 之前我们知道,二分查找依赖数组的随机访问,所以只能用数组来实现。如果数据存储在链表中,就...

网友评论

      本文标题:<<漫画算法>>--数据结构之数组

      本文链接:https://www.haomeiwen.com/subject/pdeswctx.html