一到作业题,原题是:
给定5个元素,给出一种算法确定这5个元的排序,最坏比较次数为7,并证明以比较为基础的算法中7次是最优的。
证明:考虑算法对应的二叉树,5个元素一共有5!=120种排列,能区分这些排列对应的二叉树最小层数为7(2^7=128),故7次是最优的。
算法:想了会没想出来,详见http://blog.youkuaiyun.com/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次。
╮(╯▽╰)╭
看来博士还有很长的路要走。