社区
数据结构与算法
帖子详情
寻找一个数组的最大值和次大值
slsinsiston
2012-10-11 02:58:43
如题,怎么解决?
1、两个变量,遍历数组。
2、建立大顶堆,第一元素是最大的,次大的在第二个和第三个元素中选。
各位大牛,这样可否?
...全文
1260
18
打赏
收藏
寻找一个数组的最大值和次大值
如题,怎么解决? 1、两个变量,遍历数组。 2、建立大顶堆,第一元素是最大的,次大的在第二个和第三个元素中选。 各位大牛,这样可否?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
华仔AI智能体
2012-10-19
打赏
举报
回复
1) 数据库处理方面尽量减少读取次数,多使用存储过程。
2) 可以采用静态页面的方法。
3) 减少图片的使用,一定要使用图片,则用gif或jpg较小的图片。
4) 使用负载均衡部署服务器。
5) 利用服务器缓存来提高页面的响应速度,页面缓存或数据缓存,比如hibernate二级缓存或者使用ehcache、oscache、menerycache(中央缓存)。
6) 减少http客户端请求次数,前台能用javascript的不再访问服务端。
华仔AI智能体
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
打赏
举报
回复
如果要求支持删除操作可以用堆,否则毫无必要
遍历
寻找
最
大值
次
大值
次
次
大值
从九月份到现在的十二月份,本人从
一个
大一小白刚学习到现在变成班级倒数的菜鸡。 即将进入2020年全面小康,在这里提前祝大家2020新年快乐! 下面是菜鸡的一段小代码,希望大佬可以纠错或者带带我这只菜鸡! #include <bits/stdc++.h>//此头文件功能强大,推荐新手可以使用【滑稽】 using namespace std; int a[10000];//
数组
放在main...
小马智行Pony.ai算法实习生笔试题3——求相邻数字经K
次
交换得到的
最
大值
题目描述:
数组
中存储了一堆小于10的非负整数,整个
数组
从左到右代表
一个
正整数(如
数组
[0,1,3,2]代表正整数132)。现给出
一个
正整数K,要求经过K
次
数组
相邻位置元素交换(必须完成K
次
交换),使得这个
数组
代表的数字最大。 例如, int array[]={0,1,3,2},K=1,则经过1
次
交换后,
数组
能代表的
最
大值
为1032; int array[]={0,1,3,2},K=2,则经过...
一个
for循环取
最
大值
和第二
大值
练习
数据结构:求一维
数组
中的
最
大值
最小值
数据结构:求一维
数组
中的
最
大值
最小值(直接遍历法和递归法)
设计
一个
最优算法来查找一n个元素
数组
中的
最
大值
和最小值。已知一种需要比较2n
次
的方法,请给
一个
更优的算法。
先遍历一遍
数组
,两个两个分成一组,小的放在左边大的放在右边,这样比较
次
数是N/2。N是
数组
的长度。然后最小的元素一定是在每组的左边,最大的元素在右边。下一步在左边的所有元素中比较N/2
次
产生最小的,在右边的元素中比较N/2
次
产生最大的。总共需要比较的
次
数是3*(N/2)
次
。代码如下 #include #include using namespace std; int main()
数据结构与算法
33,025
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章