一到作业题,原题是:
给定5个元素,给出一种算法确定这5个元的排序,最坏比较次数为7,并证明以比较为基础的算法中7次是最优的。
证明:考虑算法对应的二叉树,5个元素一共有5!=120种排列,能区分这些排列对应的二叉树最小层数为7(2^7=128),故7次是最优的。
算法:想了会没想出来,详见http://blog.csdn.net/fisher_jiang/article/details/2442486.
设他们是abcde,不妨设a<b,c<d,比较bd,不妨设b<d,则有a<b<d,c<d,用二分插入将e插入到abd中,需要2次比较,分为两种情况:1是e<d,则用二分插入将c插入到abe中;2是e>d,则用二分插入将c插入到ab中。总共7次。
看了这个解答恍然大悟——妙哉妙哉!此方法出自于“ H.B.Demuth 于 1956 的博士论文”。不愧为博士,就是牛。
仔细思考了一下,之前一直想的是比较bc,用5次确定4个数的序,然后插入e,共8次。
╮(╯▽╰)╭
看来博士还有很长的路要走。
本文介绍了一种用于确定五个元素排序的算法,该算法在最坏的情况下只需要进行七次比较,并证明了这是以比较为基础的算法中最佳的情况。通过构造特定的二叉树模型来展示算法的实现方式。

433

被折叠的 条评论
为什么被折叠?



