码迷,mamicode.com
首页 > 其他好文 > 详细

关于归并排序元素之间比较次数的计算

时间:2014-05-21 23:05:08      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:class   c   ext   a   line   问题   

问题: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次比较。其它同理!

关于归并排序元素之间比较次数的计算,布布扣,bubuko.com

关于归并排序元素之间比较次数的计算

标签:class   c   ext   a   line   问题   

原文地址:http://www.cnblogs.com/wiming/p/3739101.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!