簡體   English   中英

Array.copyOf()的時間復雜度

[英]Time Complexity for Array.copyOf()

我有一個程序,如果整數表現得像整數堆棧,則使用數組。 但是,對於數組,必須有定義數量的元素。 當用戶調用諸如push()之類的方法並且該方法超出了數組的初始數量時,我必須將原始數組中的所有內容分配到更新后的數組中並調整其大小。

如果我有:

    int[] data = new int[100];

並且用戶調用push(),它將在必要時調整大小。

    public int push(int item) {
        if (size + 1 > data.length) { // O(n) solution
            data = Arrays.copyOf(data, data.length * 2 + 1); // double array size
        }
        data[size] = item; // size is elements from 0 to size that matter(as a stack)
        size++;
        return item;
    }

但是,我想知道:Arrays.copyOf()的運行時復雜度是多少? 我的測試似乎表明介於O(n)和O(constant)之間,但是我仍然不確定。 如果不是O(constant),是否有一種新的方法來調整數組的大小,同時保持此方法的O(constant)運行時?

Array.copyOf的復雜度為O(n) 在內部,它使用System.arraycopy其復雜度為O(n)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM