大数据时代,海量数据的分析也成为了各大公司面试的热点问题。本文总结了几种常用的方法。
数据结构
bitmap
适用范围:可进行数据的快速查找,判重,删除,一般来说数据范围是int的10倍以下
基本原理及要点:使用bit数组来表示某些元素是否存在;判重一般采用2-bitmap,即采用两个bit位来表示一个数据出现的次数(00表示未出现、01表示出现一次、10表示出现两次及其以上)
堆
这里的堆不是我们提到的堆栈里的堆,而是用来排序的堆。
适用范围:海量数据前n大,并且n比较小,堆可以放入内存
基本原理及要点:最大堆求前n小,最小堆求前n大。维护一个拥有n个节点的堆,依次遍历剩下的元素,与堆顶元素比较,适当的时候替换堆顶元素,并调整堆。另外双堆可以用来维护中位数。
trie树
适用范围:数据量大,重复多,但是数据种类小可以放入内存
基本原理及要点:节点孩子的表示方式
hash
适用范围:快速查找、删除的基本数据结构,通常需要总数据量可以放入内存
基本原理及要点:hash函数选择,针对字符串、整数、排列等具体相应的hash方法;hash冲突的解决方式。
其他方法
分而治之
适用范围:几乎可用于所有的问题,经常