题目:输入n个整数,输出其中最小的k个。
算法思想,要是将n个数排序然后输出前k个,方法很简单,但计算量比较大,为O(nlogn)。
要是新建一个有k个元素数组,在数组不满时,将每一个输入的数据存入数组。若数组满了,则比较输入的数据与数组中最大元素的大小,来决定接下来干什么,接下来干什么,你懂的。我语言表达能力不行,就这么凑活看吧。这样的话,需要排序数组k,计算复杂度变为
O(n+klogk)。要是k<<n,这样很划得来。
那个findMinK()的第一个参数是一个集合,记录输入的数据,也可以改一改把这个变量去掉,直接在线输入n个数,然后输出k个最小的。好像后者更好,可是代码已经写完了,也就懒得改了,就这样吧。
main()中,输入数据时以输入0结束,这不是个好的方法,可是不知道怎么结束,这个问题困扰我很久了。希望有人可以告诉我。。。。。