关于归并排序元素之间比较次数的计算
2014-05-20 15:52
274 查看
问题: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次比较。其它同理!
相关文章推荐
- 关于插入排序元素之间比较次数的计算
- 关于java常用类Math的一些用法:计算数的绝对值,两个值比较大小,取0~1之间随机数
- Java和.Net 在较量中携手前进,关于2者之间的比较,几篇文章还概要性地对这2家人的世界做了介绍,是时候同时对java世界进行些了解了
- ACE与ASIO之间关于Socket编程的比较
- ACE与ASIO之间关于Socket编程的比较
- Boost.Asio和ACE之间关于Socket编程的比较
- Boost.Asio和ACE之间关于Socket编程的比较
- 关于用优先级队列和树解决中缀表达式计算的一点比较
- 计算点、线、面等元素之间的交点、交线、封闭区域面积和闭合集
- ACE与ASIO之间关于Socket编程的比较[转]
- ArrayList 和 HashTable 和 HashSet 和 List 和 Dictionary 之间关于插入查询的时间比较
- 关于CMMI和PMBOK之间的关系和区别比较
- 关于CMMI和PMBOK之间的关系和区别比较
- 计算点、线、面等元素之间的交点、交线、封闭区域面积和闭合集(续4)
- 计算点、线、面等元素之间的交点、交线、封闭区域面积和闭合集(续3)
- ACE与ASIO之间关于Socket编程的比较
- ACE与ASIO之间关于Socket编程的比较
- 计算点、线、面等元素之间的交点、交线、封闭区域面积和闭合集(续2)
- 计算点、线、面等元素之间的交点、交线、封闭区域面积和闭合集(续6)
- C# 关于 xmlreader xmldocument 和xpath 之间的性能比较