图解动态数组的时间复杂度

分析动态数组的时间复杂度

  • 时间复杂度分析

时间复杂度分析

图解动态数组的时间复杂度_第1张图片
平均情况下只需要挪动大概1/2的元素,所以平均复杂度为O(n/2)
图解动态数组的时间复杂度_第2张图片
图解动态数组的时间复杂度_第3张图片
图解动态数组的时间复杂度_第4张图片

图解动态数组的时间复杂度_第5张图片
图解动态数组的时间复杂度_第6张图片
图解动态数组的时间复杂度_第7张图片
图解动态数组的时间复杂度_第8张图片
图解动态数组的时间复杂度_第9张图片
图解动态数组的时间复杂度_第10张图片
图解动态数组的时间复杂度_第11张图片

    //从数组中删除index位置的元素,返回删除的元素
    public E remove(int index){
        if(index < 0 || index >= size){
            throw new IllegalArgumentException("remove failed. Index is illegal");
        }
        for(int i = index + 1; i < size; i ++){
            data[i - 1] = data[i];
        }
        size --;
//        data[size] = null;//loitering objects != memory leak内存泄漏

        if(size == data.length / 2)
            resize(data.length / 2);
        return data[index];
    }

更改为

		if(size == data.length / 4 && data.length / 2 != 0)
            resize(data.length / 2);
        return data[index];

你可能感兴趣的:(数据结构与算法)