6个数排序只要10次比较就可以了

boodweb 2003-10-18 03:18:38
5各元素7次搞定,第六个在此基础上用二分法,最多再比较3次即可
我选了11次,郁闷!不知有没有人作对...

[以下贴自南大小百合bbs算法版精华区,原贴为starfish所发]

5个数通过7次比较排序的方法如下。

5个数之间的大小关系构成的一个树形图T。T中的一个结点代表一个数,而一条边代表它所

关联的两个数的大小关系,T的根就是中位数。显然T中的一条边要由一次比赛来确定。在

面的图中,如果x大于y,则节点x在节点y的上方且x和y有一条边相连。另外,*表示一般的

数,o表示下一次即将进行比较的两个数。

第1步,先任取两个数比较,结果为:

*
|
* o o *

第2步,再取另外两个数比较,结果为:

o o
| |
* * *

第3步,按照上图比较其中两个标记为o的数,比较结果只有一种情况:

*
/ \
o *
|
* o

第4步,按照上图比较其中两个标记为o的数,比较结果有两种情况:

o o *
\ / \ / \
* * * *
| / \
* o o

第5步,按照上图比较其中两个标记为o的数,比较结果有两种情况:

* *
| / \
* * o
/ \ |
o o o
| |
* *

第6步,按照上图比较其中两个标记为o的数,比较结果有三种情况:

* * *
| | / \
* * o o
| | \ /
* * *
| / \ |
* o o *
|
*
其中第一种情况已经排好序了
第7步,按照上图比较其中两个标记为o的数,比较结果只有一种情况:

*
|
*
|
*
|
*
|
*

所以只需要7步比较就可以把5个数排好序
...全文
34 点赞 收藏 6
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
loujing 2003-10-19
我算的最坏情况是数据原来从大到小排的,但要你从小到大排好。
选择排序最多15次,所以要少于15次。
但10和11我拿不定,起初选了11,最后蒙了一个10。
回复
johnzyx 2003-10-18
我选的是10次
^_^
回复
qiangshenglin 2003-10-18
的确是10次。不信的可以去看数据结构(pascal版的),恩应该是排序那一章的最后,n小于11的都是log2(n!)。
回复
boodweb 2003-10-18
ft,有没有搞错,问的是最坏情况下最少要几次,现在我最多10次,不管什么情况都能排好(当然包括最怀情况),那当然是10次了
回复
zzzle 2003-10-18
是啊,所以应该是冒泡法。
回复
mll5644 2003-10-18
老弟,题目要的是最坏情况呀
回复
发动态
发帖子
软件水平考试
创建于2007-08-27

2699

社区成员

就计算机等级考试、软件初、中、高级不同级别资格考试相关话题交流经验,共享资源。
申请成为版主
社区公告
暂无公告