记录一下自己实现topN问题
题目源自剑指offer(题号:JZ29):https://www.nowcoder.com/practice/6a296eb82cf844ca8539b57c23e6e9bf?tpId=13&&tqId=11182&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
题目:
input:int[] arr , int k
return: ArrayList
思路:
TopN算法本质还是要结合排序来进行操作。
- 举个例子。第一种做法:参考冒泡排序,每次把最小的往后挪。复杂度:O(kn)
- 使用堆排序。复杂度分析:O(nlogn + klogn)
代码实现(我是自己为了练习,就没有调库,自己用数组实现的一个小顶堆。代码可能有点粗糙,不够优雅)
import java.util.ArrayList;
public class again {
public static void main(String[] args){
int[] arr = {
4,5,1,0,2,7,3,8};
ArrayList<Integer> array = GetLeastNumbers_Solution(arr , 5);
System.out.println(array.toString());
}
public static ArrayList<Integer> GetLeastNumbers_Solution(int