
数据结构
不忘初心ff
初出茅庐的新人
展开
-
常见的排序算法
排序就是将一组对象按照某种逻辑顺序重新排列的过程,在数据处理和科学计算中有着重要的作用,下文将会对一些常见的算法进行分析并给出实现(Java): 常见排序算法特点 算法 是否稳定 原地排序 时间复杂度 空间复杂度 冒泡排序 稳定 是 N^2 1 插入排序 是 是 介于N和N^2之间 1 ...原创 2019-02-16 09:16:43 · 150 阅读 · 0 评论 -
最大堆的实现和运用
最近看到了这样一个题目:输入N(很大)个整数,找出其中最小的K个数。 初看这个问题,很多人下意识的的思路就是先排序,再找出最大的数,这种做法当然可行,空间复杂度为O(n),时间复杂度为O(NlogN),在海量数据的情况下会消耗较大内存;此处采用最大堆,则可以提高效率。 最大堆是一种数据结构,本质上是一颗完全二叉树,树的根节点是最大值,与此对应有最小堆:我们可以创建一个容量为K的最大堆,先插入K...原创 2019-02-16 09:54:48 · 874 阅读 · 1 评论 -
LRU算法的实现
这是2019年阿里巴巴的一道面试题: 题目:LRU 缓存机制 设计和实现一个 LRU(最近最少使用)缓存数据结构,使它应该支持一下操作:get 和 put。 get(key) - 如果 key 存在于缓存中,则获取 key 的 value(总是正数),否则返回 -1。 put(key,value) - 如果 key 不存在,请设置或插入 value。当缓存达到其容量时,它应该在插入新项目之前使最...原创 2019-08-12 15:49:11 · 564 阅读 · 0 评论