题目:
输入n个整数,找出其中最小的k个数。
解法:
top K问题。
如果n不大,可以一次性载入内存,则用一个数组保存,然后进行多次partition()即可
如果n很大,无法一次性载入内存,则构建一个大顶堆(根结点比所有子结点都大),依次读入n个数,并分别与堆顶元素做比较,如果比堆顶元素大,直接丢弃;如果比堆顶元素小,则替换堆顶元素。最后,堆的元素即为所求。
题目:
输入n个整数,找出其中最小的k个数。
解法:
top K问题。
如果n不大,可以一次性载入内存,则用一个数组保存,然后进行多次partition()即可
如果n很大,无法一次性载入内存,则构建一个大顶堆(根结点比所有子结点都大),依次读入n个数,并分别与堆顶元素做比较,如果比堆顶元素大,直接丢弃;如果比堆顶元素小,则替换堆顶元素。最后,堆的元素即为所求。