社区
数据结构与算法
帖子详情
寻找一个数组的最大值和次大值
slsinsiston
2012-10-11 02:58:43
如题,怎么解决?
1、两个变量,遍历数组。
2、建立大顶堆,第一元素是最大的,次大的在第二个和第三个元素中选。
各位大牛,这样可否?
...全文
1128
18
打赏
收藏
寻找一个数组的最大值和次大值
如题,怎么解决? 1、两个变量,遍历数组。 2、建立大顶堆,第一元素是最大的,次大的在第二个和第三个元素中选。 各位大牛,这样可否?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
如果要求支持删除操作可以用堆,否则毫无必要
找出
数组
中的
最
大值
和
次
大值
如何找出
一个
数组
中的
最
大值
和
次
大值
,并且找出它们的位置。 思路: 假设只有四个数字,分成两组,前两个比较一
次
得出最大和
次
大,后两个比较一
次
得出最大和
次
大,则四个数字的
最
大值
就是两个较
大值
中的
最
大值
。而
次
...
查找
数组
最
大值
五种方式
for循环方式手动定义
一个
最
大值
,循环比较,如果
数组
的某
一个
元素比
最
大值
还要大,就将这个
数组
元素作为
最
大值
比如说定义的
最
大值
是0 现在开始循环
数组
下标为0的第
一个
元素2 大于0 此时将2作为
最
大值
,依
次
类推,...
java快速
寻找
一个
数组
的
最
大值
或最小值, min, max,三种方法
java 中
寻找
一个
数组
中的
最
大值
或最小,除了自己专门编写
一个
min 或 max 函数外,还有几种方式方便使用。 1. 使用 stream 将
一个
数组
放进 stream 里面,然后直接调用 stream 里的 min 或 max 函数得到
最
大值
或...
c语言实现输出
数组
最
大值
与
次
大值
提示:根据算法与数据结构来
寻找
最
大值
与
次
大值
并输出,在主函数中调用该方法时只需要传入
数组
和
数组
元素个数即可。 c语言
寻找
最
大值
和
次
大值
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务...
C++
寻找
数组
中的
最
大值
#include<iostream> using namespace std;... //访问
数组
中的每
一个
元素,如果这个元素比认定的
最
大值
max还要大,那么更新
最
大值
for (int i = 0; i < 5; i++) { if (arr[i]>max) { .
数据结构与算法
33,007
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章