簡體   English   中英

合並兩個排序數組的最壞情況下的比較次數?

[英]Number of Comparison in Worst Case of Merging Two Sorted Array?

給定兩個大小為nm排序數組A, B 我正在尋找合並這兩個數組的最差比較數。

1)n + m-1

2)最大(n,m)

3)分鍾(m,n)

4)百萬

我知道這不是一個好問題,因為沒有提到合並算法,但是我認為,正常的合並排序算法-合並步驟通常應用n + m -1比較,其中一個列表的大小為n,另一個列表的大小為n尺寸為m 使用此算法是合並兩個排序列表的最簡單方法。 任何專家都可以幫助我,我選擇(1)對嗎?

可以從文檔中輕松找到:

復雜

最多std :: distance(first1,last1)+ std :: distance(first2,last2)-1個比較。

所以是第一。 (是的,它假設標准委員會的正確性是正確的,但這不是一個難題。)

選項4顯然是錯誤的,因為n + m-1的增長速度比n * m慢,因此我們已經有了更好的估計。

在此反例中,選項3為假:

[4], [1, 2, 6, 7]

需要至少兩個比較。 選項2反例:

[1,6], [2,5]

需要進行3個比較:

1 < 2?, 6 < 2?, 6 < 5?

假設m <n,則至少進行m次比較,最多進行n + m-1次比較(最壞的情況)。 因此,假設最小列表中的所有元素排在最前面,則比較的最小次數為min(n,m)。 假設最簡單的意思是最好的情況,那么答案3是正確的答案。 對於最壞的情況,答案1是正確的。

暫無
暫無

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

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