查找最小的k个元素

题目:输入n个整数,输出其中最小的k个。

 

算法思想,要是将n个数排序然后输出前k个,方法很简单,但计算量比较大,为O(nlogn)。

 

要是新建一个有k个元素数组,在数组不满时,将每一个输入的数据存入数组。若数组满了,则比较输入的数据与数组中最大元素的大小,来决定接下来干什么,接下来干什么,你懂的。我语言表达能力不行,就这么凑活看吧。这样的话,需要排序数组k,计算复杂度变为

O(n+klogk)。要是k<<n,这样很划得来。

那个findMinK()的第一个参数是一个集合,记录输入的数据,也可以改一改把这个变量去掉,直接在线输入n个数,然后输出k个最小的。好像后者更好,可是代码已经写完了,也就懒得改了,就这样吧。

 

main()中,输入数据时以输入0结束,这不是个好的方法,可是不知道怎么结束,这个问题困扰我很久了。希望有人可以告诉我。。。。。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值