剑指offer 30 最小的k个数

面试题30:最小的k个数,输入n个整数,找到其中最小的k个数


 思路  1、输入的n个数排序,最前面的k个数就是最小的k个数,算法复杂度为O(nlogn)
          2、询问面试官是否可以修改数组,如果可以,则有快排思想,最左边的全部比k

               如果不可以修改数组,则创建一个大小为k的容器来存储最小的k个数字,每次输入一个数,如果容器小                 于k个数, 则添加进来,如果容器已经满了,则找出容器中最大值与新数字比较,如果大于新数字,则                   替换,如果小于新数字,则不替换,这种思想适合处理海量数据,复杂度O(nlogk)

                用堆排序实现容器(红黑树)

猜你喜欢

转载自blog.csdn.net/dennis_wu_/article/details/80840426
今日推荐