7次比较把5个字母按顺序排列54358.docVIP

  • 1
  • 0
  • 约5.04千字
  • 约 7页
  • 2018-05-28 发布于河南
  • 举报
7次比较把5个字母按顺序排列54358

7次比较把5个字母按顺序排列54358 一个有用的结论是对n个数使用基于比较的排序算法,至少需要ceiling(lg(n!))次比较,那么五个数至少需要ceiling(lg(5!))=7次比较。只需证明7次比较可以排序就行了。 如下5个随机的数据: o o o o o 两次比较后:(对于有边相连的点,上面的大于下面的,右面的大于左面的) * * | | # # o 比较两个*: *---* | | # # o 再用两次比较,将o插入由两个*和左边的#组成的链中,有四种情况: *---* *---* *---o---* *---*---o | | | | | | | | # $ o $ # $ # $ | | o # 无论哪种情况,我们都可以通过两次比较(注意,我们将原来右边的#换成了$)将$插入到其它四个数中。 所以,7次比较足够了。 Top 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的数,比较结果有三种情况: * *

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档