数据结构和算法002——数组

105 阅读1分钟

数组是最基本的数据结构之一,可以存储有限个元素(固定长度),可以增删改查

数组代码:

public class MyArray {
    //定义一个数组
    int[] elements;

    //初始化数组
    public MyArray(){
        elements = new int[0];
    }

    //获取数组的长度
    public int size(){
        return elements.length;
    }

    //往数组的末尾添加一个元素
    public void add(int ele){
        int[] newArr = new int[elements.length + 1];
        for (int i = 0;i < elements.length;i++){
            newArr[i] = elements[i];
        }
        newArr[elements.length] = ele;
        elements = newArr;
    }

    //遍历数组的方法
    public void arrayShow(){
        System.out.println(Arrays.toString(elements));
    }

    //删除一个元素
    public void delete(int index){
        if (index < 0 || index > elements.length - 1){
            throw new RuntimeException("传入下标不正确");
        }
        int[] newArr = new int[elements.length - 1];
        for (int i = 0;i < newArr.length;i++){
            if (i < index){
                newArr[i] = elements[i];
            }else{
                newArr[i] = elements[i + 1];
            }
        }
        elements = newArr;
    }

    //取出指定位置的元素
    public int get(int index){
        if (index < 0 || index > elements.length -1){
            throw new RuntimeException("传入下标不正确,不能读取元素");
        }
        return elements[index];
    }

    //插入一个元素到指定位置
    public void insert(int index,int ele){
        int[] newArr = new int[elements.length + 1];
        for (int i = 0;i < newArr.length;i++){
            if (i < index){
                newArr[i] = elements[i];
            }else{
                newArr[i + 1] = elements[i];
            }
        }
        //插入新的元素
        newArr[index] = ele;
        //替换数组
        elements = newArr;
    }

    //替换其中的一个元素
    public void update(int index,int ele){
        if (index < 0 || index > elements.length - 1){
            throw new RuntimeException("传入下标不正确,不能修改数组");
        }
        elements[index] = ele;
    }

    //线性查找
    public int search(int target){
        for (int i = 0;i < elements.length;i++){
            if (elements[i] == target){
                return i;
            }
        }
        //未找到相应元素
        return -1;
    }
}

测试数组:

public class TestMyArray {
    public static void main(String[] args) {
        MyArray myArray = new MyArray();
        myArray.add(2);
        myArray.add(11);
        myArray.add(15);
        myArray.add(7);
        myArray.add(14);
        myArray.add(3);
        myArray.add(8);
        myArray.delete(2);
        myArray.arrayShow();
    }
}