我試圖確定合併排序爲大澳的運行時間,運行時間:什麼是合併排序的這些輸入
(A)進行分類輸入
(B)反向有序輸入
(C)隨機輸入
我的答案是,它會採取所有三種情況爲O(n LGN),因爲不管輸入的默認順序的,歸併排序總是將輸入到最小1元素的單位。然後它會將每個元素與相鄰列表中的每個元素進行比較,以對兩個相鄰列表進行排序和合並。它將繼續這樣做直到最後所有的元素都被排序和合並。
也就是說,我們真正需要找到然後是一般歸併排序的大O的複雜性,因爲最差,平均和最好的情況下都會採取同樣的時間。
我的問題是,有人可以告訴我,如果我的答案是正確的,如果是的話,解釋爲什麼歸併排序的大O的複雜性最終是爲O(n LGN)?
有很多答案,以便回答您的疑問。另外,在所有情況下,您都完全正確,所花費的時間將類似。 – vish4071
大O的複雜性是O(n log(n)),因爲這是在原始數組和工作數組之間執行的移動次數。對於n個元素,有ceil [log2(n)](上限被四捨五入),每次移動n個元素,總共有O(n log(n))個移動。隨機數據的比較次數少一點,對於有序數據或反向數據最好的情況是n/2log(n),但1/2因數是一個常數,所以總體複雜度保持爲O(nlog(n)) 。 – rcgldr