对5个数进行排序,需7次比较的方法
2015-04-15 15:11
344 查看
本文介绍一个对5个数进行排序的方法,仅使用7次比较。假设要排序的数为a,b,c,d,e。
首先将a,b进行比较,假设结果为a<b,再将c,d进行比较,假设结果为c<d;然后将两组数的较大者进行比较(即比较b,d),假设结果为b<d,于是就有下面的关系,箭头的关系表示“<”,即"小于",至此,已经进行了三次比较。
,这个图的含义为:a<b<d,c<d
现在将e插入到{a,b,d}的适当位置,采用二分查找法寻找查找位置时,只需要两次比较——先同b比较,然后再同a或d比较。将e插入到{a,b,d}时,一共有下面四中结果:
在这四中情况中,要将c插入到由[abcd]组成的序列中最多只需要两次比较。同样使用二分法寻找插入位置。以第一种情况为例:c首先同a比较,如果大于a,再同b比较,如果大于b,则不会再同d比较,因为我们在之前已经知道c<d。
参考文献:计算机程序设计艺术,第三卷,Page:174
完毕
首先将a,b进行比较,假设结果为a<b,再将c,d进行比较,假设结果为c<d;然后将两组数的较大者进行比较(即比较b,d),假设结果为b<d,于是就有下面的关系,箭头的关系表示“<”,即"小于",至此,已经进行了三次比较。
,这个图的含义为:a<b<d,c<d
现在将e插入到{a,b,d}的适当位置,采用二分查找法寻找查找位置时,只需要两次比较——先同b比较,然后再同a或d比较。将e插入到{a,b,d}时,一共有下面四中结果:
在这四中情况中,要将c插入到由[abcd]组成的序列中最多只需要两次比较。同样使用二分法寻找插入位置。以第一种情况为例:c首先同a比较,如果大于a,再同b比较,如果大于b,则不会再同d比较,因为我们在之前已经知道c<d。
参考文献:计算机程序设计艺术,第三卷,Page:174
完毕
相关文章推荐
- 对5个数进行排序,需7次比较的方法
- 【算法设计与分析】5个数7次比较排序的算法
- 5个数7次比较排序
- 【算法设计与分析】5个数7次比较排序的算法
- 用7次比较完成5个元素的排序
- 5个数通过7次比较排序的方法
- Collections.sort方法(可以根据集合中类的属性的比较对集合内的类进行排序)
- 7次比较,对5个数进行排序
- 5个数6次比较找中位数,7次比较排序 [转]
- Java编程之TreeSet排序两种解决方法(1)元素自身具备比较功能,元素需要实现Comparable接口覆盖compare(2)创建根据自定义Person类的name进行排序的Comparator
- 只使用7次比较,完成5个元素的排序
- 5个数7次比较排序的代码
- 5个数7次比较排序
- 【算法设计与分析】5个数7次比较排序的算法
- 【算法设计与分析】5个数7次比较排序的算法
- 5个数6次比较找中位数,7次比较排序
- zz5个数用7次比较进行排序
- Java中使用Collections.sort()方法对数字和字符串泛型的LIst进行排序
- 比较多个日期大小,并对这些日期进行排序
- PHP usort 使用用户自定义的比较函数对数组中的值进行排序