找出N个数组中第二大的数,需要比较多少次呢?
来源:互联网 发布:宣传片制作软件 编辑:程序博客网 时间:2024/05/20 07:58
方法一、比较笨的方法
先找到本数组中的最大数X,需要n-1次比较,再在剩下的数组中去找最大数X’,需要n-2次比较
则X’就是第二大的数,这需要(n-1) + (n-2)次比较
方法二、我们也可以在数组中,两数结合,分别求出最大值 和 次大值,之后每两个数结合求出的最值 在相互比较,得到最值得最大值 和 次大值
具体思路:
把数组中的每两个元素分为一组,每组中的最大数为F,第二大数为S。
假设相邻两组的最大数和第二大数分别是:Fleft,Si 和 Fright,Sj,。
则这两组合并为一组后,其中最大数和第二大数可能是:
1、若Fi > Fj,则最大数是Fi;
若Si >Fj,则第二大数是Si;否则,第二大数是Fj
2、若Fi< Fj,则最大数是Fj
若Fi>Sj,则第二大数是Fi;否则,第二大数是Sj
比较次数:共有N/2组,每组需要比较倆次得出本组的最大数和第二大数;共需比较N/2 * 2次。
方法三、分治法
思路:和上面的思路是一样的
把数组分成两部分,其最大数和第二大数分别是:Fleft,Sleft,Fright,Sright。合并时的情况可能为:
1、Fleft > Fright,最大数是Fleft;若Sleft>Fright,则第二大数是Sleft,否则第二大数是Fright;
2、Fleft < Fright,最大数是Fright;若Fleft>Sright,则第二大数Fleft,否则第二大数是Sright。
- 找出N个数组中第二大的数,需要比较多少次呢?
- 一个具有N个元素的数组,找出数组中的第二大的数
- 找出数组中第二大的数
- 找出数组中第二大的数
- 找出数组中第二大的数
- 找出数组中第二大的数
- 找出数组中第二大的数
- 找出数组中第二大的数
- 找出数组中第二大的数
- 找出数组中第二大的数
- 找出一个整数数组中,第二大的数
- 找出一个整数数组中第二大的数
- 如何找出数组中第二大的数
- 如何找出一个数组中第二大的数
- 找出数组前N大的数
- 找出两个数中比较大的
- N个元素的数组中找出出现多于N/2次的数(主元素)
- 找出n个整数中的最大和第二大的
- JSON—在服务器上生成JSON
- android 类似微信的摇一摇实现
- mysql DELIMITER(分隔符)的使用
- add two numbers
- Android服务不被杀
- 找出N个数组中第二大的数,需要比较多少次呢?
- 湫湫系列故事——减肥记I(DP之——完全背包)
- 1029 三位数的数位分离
- C# WORD操作实现代码 笔记
- Android中的“再按一次返回键退出程序”实现
- Linux 关于动态链接库以及静态链接库的一些概念
- WinForm设置FormBorderStyle=none后仍可以使用任务栏左键和右键功能
- 高性能WEB服务器开发心得整理
- hdu 1022 Train Problem I