复杂度分析(时间)

2019-05-14  本文已影响0人  曹来东

动态数组9

方法 最好 最坏 平均
add(int index,E element) O(1) O(n) O(n)
remove(int index) O(1) O(n) O(n)
set(int index,E element) O(1) O(1) O(1)
get(int index) O(1) O(1) O(1)

链表

方法 最好 最坏 平均
add(int index,E element) O(1) O(n) O(n)
remove(int index) O(1) O(n) O(n)
set(int index,E element) O(1) O(n) O( n)
get(int index) O(1) O(n) O(n)

动态数组add(E element)复杂度分析

复杂度
最好 O(1)
最坏 O(n)
均摊 O(1)

动态数组的缩容

private void trim() {
        // 30
        int oldCapacity = elements.length;
        // 15
        int newCapacity = oldCapacity >> 1;
        if (size > (newCapacity) || oldCapacity <= DEFAULT_CAPACITY) return;
        
        // 剩余空间还很多
        E[] newElements = (E[]) new Object[newCapacity];
        for (int i = 0; i < size; i++) {
            newElements[i] = elements[i];
        }
        elements = newElements;
        
        System.out.println(oldCapacity + "缩容为" + newCapacity);
    }
上一篇 下一篇

猜你喜欢

热点阅读