算法基础
小方童鞋
这个作者很懒,什么都没留下…
展开
-
笔试题回顾:在一维数组中查找出现次数最多的元素 Java
查找出现次数最多的元素 例如:在数组 { 2, 3, 1, 2, 2, 5, 6, 8, 2, 3, 2, 4, 2 }中,元素2出现的次数最多,一共出现了 6次。3出现两次 分析 使用HashMap存储元素及其出现次数,然后添加进list中,对list排序。 import java.util.*; public class Main{ public static void main(String[] args) { int[] arr = { 2, 3, 1, 2, 2, 5原创 2020-09-26 15:22:21 · 289 阅读 · 0 评论 -
算法:TopK问题,使用堆排序和优先队列PriorityQueue
TopK 从一亿个数据中找到前100个最大值 将无需序列构建成一个堆,根据升序降序需求选择大小为K的大顶堆或小顶堆; 将堆顶元素与数组中的元素比较,比堆顶大的元素,先弹出堆顶,然后元素入堆 时间复杂度O(NlogK) import java.util.Arrays; public class TopKHeapSort { public static void main(String[] args) { int[] arrs = new int[10000*10000];原创 2020-08-28 21:10:01 · 225 阅读 · 0 评论 -
排序算法:堆排序Java实现,以及用PriorityQueue实现大顶堆的方法。
堆排序 时间复杂度 O(n logn) 稳定性:不稳定 一般升序使用大顶堆,堆顶元素是最大值,与最末位元素交换,然后对前n-1个元素重新做堆排序。 降序用最小堆 Java中可以使用PriorityQueue实现堆排序,PriorityQueue本身实现的是小顶堆,可以用lambda表达式写成大顶堆 //PriorityQueue实现大顶堆 PriorityQueue<Integer> queue = new PriorityQueue<Integer>(new Com原创 2020-08-28 20:12:22 · 640 阅读 · 0 评论