關於歸並排序元素之間比較次數的計算


問題:3,1,4,1,5,9,6,5  通過歸並排序對它進行從大到小的排序  要進行多少次數組元素之間的比較?
網站找的解決方法:
第一趟合並(3,1),(4,1),(5,9),(5,6) ,元素之間共比較了4次;
第二趟合並(4,3,1,1),(9,6,5,5),元素之間共比較了6次;
為什么是6次?(3,1)和(4,1)是怎么比較得到(4,3,1,1)的呢?難道是插入排序?不是的。
首先我把Left=(3,1),Right=(4,1),tmp數組用於排序好的結果,目前為空,也就是()。
用Left[0],,也就是3,和Right[0],也就是4比較(1次),看哪個大,后加入到tmp,同時從大的數組中刪除該元素,
這樣第一次比較下來,Left=(3,1),Right=(1),tmp=(4);
然后同理了,仍然用Left[0]和Right[0]比較,即3>1,將3加入tmp,同時從Left中刪除3,
這樣第二次比較下來,Left=(1),Right=(1),tmp=(4,3);
繼續剩下的元素,Left[0]=1和Right[0]=1比較(第三次),得到1=1,取1加入tmp,剩下的1自然就不用比較了,直接加入tmp,
於是tmp=(4,3,1,1),Left=(),Right=(),共進行3次比較。其它同理!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM