2016-11-12 63 views
-1

假設給定了長度爲n的任意數組。在最壞情況下的O(1)時間內,您可以在陣列上執行以下哪種操作?通過1
B.插入在個位置任意陣列中的操作和時間複雜度

A.拆下個元素,從而降低了尺寸的元件中,通過1
C.增加大小找到最大元素
D.進行交換位置Ĵ

在這個問題上的元素,我不知道任意陣列的定義。看來D是正確的,但我不確定。有人可以解釋嗎?非常感謝!

+2

這看起來像一個家庭作業問題,在這種情況下,你應該問你的老師什麼是*「任意陣列」* – UnholySheep

+2

['任意'](http://www.dictionary.com/browse/arbitrary):*受個人意願或判斷的限制;只根據自己的判斷力而定* ---因此,任何*數組,無論類型,大小和實際值如何,除了您知道size是'n',而值'n'也是任意的。 – Andreas

+1

我投票結束這個問題作爲題外話,因爲要求定義英文單詞的問題不是[*編程*或*軟件*問題](http://stackoverflow.com/help/on-topic)。 – Andreas

回答

0

我認爲這是任意的,它可能意味着數組的值並不重要。 A)刪除第i個元素並將數組的大小減1時具有O(n)複雜度:當刪除第i個元素時,必須將所有其他元素向下移動一個索引。如果刪除了第0個元素,則需要將n-1個元素向下移動一個索引。 B)由於類似的原因,在第i個位置插入一個元素並將數組的大小增加一個O(n)複雜度。如果我添加一個元素到數組的開頭,我需要將所有其他元素向上移動一個。更何況,因爲數組有固定的大小,我還需要創建一個新的數組並複製以前的元素。 C)尋找最大元素至少需要O(n)次。你需要查看每個元素來找到最大值,對吧?那麼,如果最大值位於數組末尾的位置n,則需要檢查所有直到該點的值。 D)交換元素只是O(1)。這是一個不需要while循環或不循環的常量操作。

就是這樣的。希望能幫助到你!