社区
C语言
帖子详情
怎 样 求 出 一 个 数 组 中 第 N 大 的 元 素
r11222
2010-08-05 02:22:00
数组很大,很大,很大。。。。
...全文
1063
48
打赏
收藏
怎 样 求 出 一 个 数 组 中 第 N 大 的 元 素
数组很大,很大,很大。。。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
48 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
s924987866
2012-10-16
打赏
举报
回复
把传过来的数组的内容拷贝到新的数组,然后排序,从大到小,这样就可以了
killallpigs
2010-09-02
打赏
举报
回复
很好,N人很多,来学习……
zdl110110
2010-08-16
打赏
举报
回复
另外建立一个大小为N的数组P,初始化为前N个元素,对P排序,遍历数组,跟P中元素进行比较,更新数组P。省去排序
獠
2010-08-16
打赏
举报
回复
学习。。。。
BuleRiver
2010-08-16
打赏
举报
回复
位图。
Simao
2010-08-16
打赏
举报
回复
[Quote=引用 41 楼 jamesf1982 的回复:]
和爱立信的面试题一样。
其实就是设计一个大小为N的特殊数据结构,并实现1个接口,将输入当前值,并将最小值踢出。
思路就是:
1,对N个元素排序
2,将新元素和最小值比较
3,如果要剔除最小值,将新元素插入数据结构中。
重点在于这个数据结构如何设计,链表or数组,或者混合体?
[/Quote]
up...
zrebecca
2010-08-16
打赏
举报
回复
数据结构怎么设计?
codesnail
2010-08-16
打赏
举报
回复
paixu
james_hw
2010-08-16
打赏
举报
回复
和爱立信的面试题一样。
其实就是设计一个大小为N的特殊数据结构,并实现1个接口,将输入当前值,并将最小值踢出。
思路就是:
1,对N个元素排序
2,将新元素和最小值比较
3,如果要剔除最小值,将新元素插入数据结构中。
重点在于这个数据结构如何设计,链表or数组,或者混合体?
ForestDB
2010-08-07
打赏
举报
回复
不太关心数组有多大,比较关心n有多大。
r11222
2010-08-07
打赏
举报
回复
[Quote=引用 33 楼 kusey 的回复:]
输入N个元素以及一个整数k,找出第k个最大的元素。
1. 把这些元素读入数组并将它们排序,返回适当的元素。
2. 将k个元素读入数组并排序,把最小的放在第k个位置,接下来一个一个地处理剩余元素。先把它与数组中第k个元素比较,如果该元素大,则删除第k个元素,把这个元素添加到数组中适当的位置,算法结束时,第k个位置上的元素就是问题的答案。
3. 建立一个最大堆,把这些元素添加进去,然后……
[/Quote]
不错不错
huayiluo
2010-08-07
打赏
举报
回复
学习 回复内容太短了!
fengqiao1999
2010-08-07
打赏
举报
回复
建立一个双向循环链表,先将K的数添加到链表中,保持从小到大的顺序,然后读取剩余数据,
如果小于最小值,直接丢弃,如果大于最小值,在适当位置插入该元素,丢弃一个最小值,保持链表的队形。
复杂度也就O(k*n),当然也可以首先扫描一遍数组,找出一组合适的数据作为初始值。
sky_pearl
2010-08-07
打赏
举报
回复
排序,然后按下标找就好了~~要找大的就按从大到小排
w_shun
2010-08-07
打赏
举报
回复
先排序,然后找出第N大的数组,因为你的数组“很大很大”,所以排序算法选择应谨慎。
neverby
2010-08-07
打赏
举报
回复
1.取第一个数为要的数字T
2.读入下一个数 如果这个数比T大 那就保存下来 如果保存的数字已经大于k个了 那么就把认定是正确的k的大数往前一个 原来的数字就可以丢弃了 也就是变成比这个数大的最小的那个 如果这个数比比T小 那么也是分2种情况 如果保存下来的个数小于k个 那么T就等于度进来的数字 并且k+1 如果保存下来的个数已经是k歌那么 就不要加进来了 一直这样读下去 读完整个N个数字 答案就出来了
kusey
2010-08-07
打赏
举报
回复
输入N个元素以及一个整数k,找出第k个最大的元素。
1. 把这些元素读入数组并将它们排序,返回适当的元素。
2. 将k个元素读入数组并排序,把最小的放在第k个位置,接下来一个一个地处理剩余元素。先把它与数组中第k个元素比较,如果该元素大,则删除第k个元素,把这个元素添加到数组中适当的位置,算法结束时,第k个位置上的元素就是问题的答案。
3. 建立一个最大堆,把这些元素添加进去,然后执行k次DeleteMax操作,从堆中最后提取出来的元素就是第k大元素。
4. 建立一个最小堆,往里边添加k个元素,则第一个元素是最小的,然后判断剩余的元素,如果该元素比第一个元素大,则执行DeleteMin,然后把该元素添加进来。执行完毕,堆中第一个元素就是第k大元素。
cao_julians
2010-08-06
打赏
举报
回复
[Quote=引用 9 楼 senr0816 的回复:]
创建一个大小为N的子数组,初始化为前N个数,然后遍历整个数组,得到前N个最大的数
[/Quote]
正确。只需遍历整个数组一次,不过要与N个元素的(有序)子数组比较--建议用二分查找、插入
guoxr888
2010-08-06
打赏
举报
回复
排序不实际 动态的先把数据采用一种合适的数据结构再考虑算法吧
多喝水ooo
2010-08-06
打赏
举报
回复
冒泡n趟也可以吧?
加载更多回复(28)
2024年软考高项-信息系统项目管理师冲刺串烧课
基于信息系统项目管理师最新第4版... 5大过程
组
,10大知识域,47个过程,n多个输入、工具与技术和输
出
,用没有任何废话的语言帮你在考前一遍遍磨耳朵,在理解
中
记忆,在记忆
中
理解,用最精炼的语言磨耳朵记忆
给
出
一个分治算法,在一个具有n个
数
的
数
组
中
找
出
第二个最大
元
素
。给
出
你算法的时间复杂性
给
出
一个分治算法,在一个具有n个
数
的
数
组
中
找
出
第二个最大
元
素
。给
出
你算法的时间复杂性。 算法 SECOND_MAX 输入:含有n个
元
素
的
数
组
A,不妨设 n=2^k 输
出
:该
数
组
中
的第二个最大
元
素
( x1, x2 ) = secondMax(1, n)...
寻找第K大(有一个整
数
数
组
,请你根据快速排序的思路,找
出
数
组
中
第K大的
数
。 给定一个整
数
数
组
a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的
数
。)
有一个整
数
数
组
,请你根据快速排序的思路,找
出
数
组
中
第K大的
数
。 给定一个整
数
数
组
a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的
数
。 测试
样
例: [1,3,5,2,2],5,3 返回:2 分析: 根据快速排序...
n个
数
中
选m个
数
的全
组
合...
从n个
数
中
选取编号次小的一个
数
,继续执行1步,直到当前可选编号最大的
数
为m。 下面是递归方法的实现: ///
求
从
数
组
a[1..n]
中
任选m个
元
素
的所有
组
合。 /// a[1..n]表示候选集,n为候选集大小,n>=m>
查找之找
出
N个整
数
中
最大的K个
数
题目一:找
出
N个整
数
中
第K大的
数
类似下边的类快排算法,递归实现,应该可以,需要验证一下。平均复杂度O(n). ...的
数
据的任何一个
数
都比另一
组
中
的任何一个大,然后再对两
组
分别做类似的操 作
C语言
69,373
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章