寻找一个数组的最大值和次大值

slsinsiston 2012-10-11 02:58:43
如题,怎么解决?
1、两个变量,遍历数组。
2、建立大顶堆,第一元素是最大的,次大的在第二个和第三个元素中选。
各位大牛,这样可否?
...全文
1128 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangguoqi 2012-10-19
  • 打赏
  • 举报
回复
1) 数据库处理方面尽量减少读取次数,多使用存储过程。
2) 可以采用静态页面的方法。
3) 减少图片的使用,一定要使用图片,则用gif或jpg较小的图片。
4) 使用负载均衡部署服务器。
5) 利用服务器缓存来提高页面的响应速度,页面缓存或数据缓存,比如hibernate二级缓存或者使用ehcache、oscache、menerycache(中央缓存)。
6) 减少http客户端请求次数,前台能用javascript的不再访问服务端。
yangguoqi 2012-10-19
  • 打赏
  • 举报
回复
支持9楼的说法
shellJ 2012-10-19
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

引用 8 楼 的回复:

冒泡,但保存/替换两个值。

木有我的方法好,我一次循环搞定。
[/Quote]
9楼的是正解,只要两个定义变量,一个放最大值,一个放次大的,一次循环足矣
haorengoodman 2012-10-18
  • 打赏
  • 举报
回复
是,确实是冒两次泡。
Jia_H 2012-10-18
  • 打赏
  • 举报
回复
排完序不就一次都可以拿出来了吗?
juniorli 2012-10-18
  • 打赏
  • 举报
回复
冒两次泡
E次奥 2012-10-16
  • 打赏
  • 举报
回复
感觉楼上说的就是冒泡排序
skillart 2012-10-15
  • 打赏
  • 举报
回复
最大值和次最大值的最优算法t(n)=n+logn
==================================
将x[1:n]分为两组x[1:k]和x[k+1:n],其中k=n/2.然后作k次比较x[i]:x[i+k],1=<i<=k.当x[i]>x[k+i]时交换它们的位置。这样经过k次比较有x[i]<=x[k+i],1=<i<=k.递归在x[k+1:n]中找出其中的最大数x[p]和次最大数x[q].
最终有x[p-k]<=x[p],x[q]<=x[p]很明显x[p]就是最大值。而次最大数只能是x[p-k]或x[q],比较一下就可以了。
zhoujk 2012-10-14
  • 打赏
  • 举报
回复
根据不用排序,用 TopK 就解决了。
tengerye 2012-10-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

冒泡,但保存/替换两个值。
[/Quote]
木有我的方法好,我一次循环搞定。
cnmhx 2012-10-11
  • 打赏
  • 举报
回复
冒泡,但保存/替换两个值。
tengerye 2012-10-11
  • 打赏
  • 举报
回复
从数组中取数和当前最大值比较:
1.更大,把次大值替换为最大值,最大值替换为该值;
2.更小,与次大值比较,如果比次大值大,替换次大值;
该思路可以解决不限个数的次大值,循环一次即可。
但是如何次大值比较多,实际上复杂度不变,耗时会增加。
tengerye 2012-10-11
  • 打赏
  • 举报
回复
如果次大值比较少,那么第一种方法肯定要好,只需要一次循环就可以了。
如果次大值比较多,就选择第二种方法。
kjs008 2012-10-11
  • 打赏
  • 举报
回复
这就是top2问题,用堆肯定比遍历好,不知道有没其他更好的方法。
slsinsiston 2012-10-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

引用 1 楼 的回复:

如果要求支持删除操作可以用堆,否则毫无必要

那第一种方法效率高,还是用堆效率高?
[/Quote]
是建立一个大顶堆,不是堆排序,所以复杂度是O(n),但是比较次数应该是比第一个小
DeDeWo 2012-10-11
  • 打赏
  • 举报
回复
第一种方法复杂度 O(n), 第二种复杂度 O(nlogn)
slsinsiston 2012-10-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

如果要求支持删除操作可以用堆,否则毫无必要
[/Quote]
那第一种方法效率高,还是用堆效率高?
hblac 2012-10-11
  • 打赏
  • 举报
回复
如果要求支持删除操作可以用堆,否则毫无必要

33,007

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧