算法中对于用七次比较完成5个元素的排序
来源:互联网 发布:经济下行 知乎 编辑:程序博客网 时间:2024/05/01 22:35
一开始自己经过了好长时间的思考,都没有完成这个问题的排序,在最终经过暗暗下定决心,终于完成了这道题目的求解,下面将我的分析思路写下来,希望我平实的语言可以帮助你理解这个题目。
对于五个元素a,b,c,d,e的排序,我们需要借鉴3个元素排序和四个元素中对于3个元素建立全序的思想,下面我们就来看看它们的思想吧!
1.对于三个元素a,b,c进行排序,示意图如下所示:
总共需要三次才可完成对a,b,c三个元素的排序。
2.对于四个元素a,b,c,d排序,我们可以对于其中任意三个元素建立全序关系,示意图如下所示:
这样总共需要三次比较,我们就对其中的三个元素建立了全序关系。
例如:当ab比较一次较大的数为b,cd比较一次较大的数为d,那么b与d再比较一次(总共需要三次),当b>d时,我们得到三个元素c,d,b的全序关系为c<d<b,其他的结果与这个例子相似。反正总共需要3次比较即可。
3.当五个元素a,b,c,d,e进行排序时,我们已经知道其中三个元素的全序关系为c<d<b且a<b(2中已经说明),我们把e可以通过折半查找放入c,d,b的某个位置,如下所示:
__c__d__b__
e先和d比较,比较结果使得e要么在d的右边,要么在d的左边,当在d的右边时,在和b比较,在左边时,类似比较即可。这样通过折半查找总共需要比较2次即可。
例当e在d的右边时,我们得到这样的排序结果,要么是c<d<e<b,要么是c<d<b<e:
①当c<d<e<b时:由于a<b,所以只需要a同c,d,e比较即可,通过折半查找,需要2次比较即可。
②当c<d<b<e时:也是由于a<b,所以通过两次比较也可以得到五个元素的排序结果,也是需要两次。
综上所述:比较五个元素需要的次数总共为:3+2+2=7次就可以完成五个元素的排序了。
- 算法中对于用七次比较完成5个元素的排序
- 【算法设计与分析】5个数7次比较排序的算法
- 【算法设计与分析】5个数7次比较排序的算法
- 5个数7次比较排序的代码
- 5个数7次比较排序
- 5个数7次比较排序
- 锦标赛排序之使用n+lgn-2次比较来选出第二小的元素
- 用6次比较,求5个数的中位数
- 5个数6次比较找中位数,7次比较排序
- 6次比较求5个数中间值,7次比较排序
- 【算法】16个无序数最多20次比较找到第二大的数
- 对5个数进行排序,需7次比较的方法
- 对5个数进行排序,需7次比较的方法
- 7次比较,对5个数进行排序
- zz5个数用7次比较进行排序
- 寻找5个数的中位数,只需6次比较的,思路与实现
- 在最坏情况下,利用n + ┌lgn┐ - 2 次比较,即可找到 n 个元素中的第2小元素
- 同时需找最小最大元素(只需要3[N/2]次比较)
- 如何AllowUnsafeUpdates
- C语言指针5分钟教程
- 【黑马程序员】多线程的方法重入问题
- windows 上命令行帐户管理
- Android中Looper/Handler学习笔记
- 算法中对于用七次比较完成5个元素的排序
- FineUI学习笔记1
- 踮起脚尖爱
- a href=#与 a href=javascript:void(0) 的区别
- gridview 添加汇总行 footer
- android4.0关于socket问题
- C++ 函数模板
- 工厂模式
- 【rmzt:成龙历险记动漫主题】