[数据结构]什么是数组?

数组:有限个相同类型的变量所组成的一个集合,数组中的每个变量可以成为一个元素,数组在内存中是顺序存储的,需要开辟连续的内存空间.
数组的特点:查找快,修改慢, 查找的时间复杂度O(1),而修改是O(n) ,其中当不关心数组的顺序时,删除操作可以用末尾的元素覆盖所要删除位置的元素,然后再删除末尾元素此时复杂度为O(1)

手敲一个简单的数组

/**
 * @author : 董硕
 * @time: 2019-07-14 18:17
 * @desc:手写一个数组 实现add update delete find ,增加了扩容功能
 */
public class MyArray {
    private int [] array;
    private int size;

    public MyArray(int size) {
        this.array = new int [size];
        this.size = 0;
    }

    public int get(int index) {
        return array[index];
    }

    public void update(int element , int index) {
        array[index] = element;
    }
    public void insert(int element , int index) {
        if (index < 0 || index > size) {
            throw new IndexOutOfBoundsException("out of array size");
        }
        if (size >= array.length) {
            resize();
        }
        for (int i = size - 1; i >= index; i--) {
            array[i+1] = array[i];
        }
        array[index] = element;
        size++;
    }
    public int delete(int index) {
        if (index < 0 || index > size) {
            throw new IndexOutOfBoundsException("out of array size");
        }
        int deleteElement = array[index];
        for (int i = index; i < size -1; i++) {
            array[i] = array[i+1];
        }
        size--;
        return deleteElement;
    }
    private void resize() {
        int [] newArray = new int[2 * size];
        System.arraycopy(this.array,0,newArray,0,size);
        this.array = newArray;
    }
    private void outPut() {
        System.out.println(JSON.toJSONString(array));
    }

    public static void main(String[] args) {
        MyArray myArray = new MyArray(10);
        myArray.insert(0,0);
        myArray.insert(1,1);
        myArray.insert(2,2);
        myArray.insert(3,3);
        myArray.insert(4,4);
        myArray.delete(0);
        myArray.insert(12,0);
        myArray.outPut();
    }
}
发布了235 篇原创文章 · 获赞 221 · 访问量 96万+

猜你喜欢

转载自blog.csdn.net/drdongshiye/article/details/95910815