算法

一.对于大数据: 分成小文件

1. 求频率TOPN/ 不重复:因为数据量太大不能全部放到内存中,利用hash映射映射成小的文件(大小差不多可放入内存中的,且hash映射可以保证同一条记录只会映射到同一个文件中,这个是之后的基础,如果题目刚开始不行则重新hash映射),然后统计频率用hashMap,最后找topK问题用堆排序,维护一个最小k堆,遍历剩余记录(O(mun*lgK))。或者归并排序。

2.对于字符串,文本的统计: Trie树。字母一个一个排下去。种类少可以用

3.对于第K大/中位数: 分层,划分为n个小区域,确定在哪个区域中,然后在那个区域中找到对应的数

4.给大量重复数字排序/判断数字是否存在/给数字去重: 位图,每一位代表一个数字,1表示有,0表示没有。空间少。如果找出不重复的整数,位图每位给2bit,代表4中可能的情况

5. 搜索引擎/关键字查询:  

1) 正向索引: 存储每个文章的单词列表

2) 反向索引: 存储关键字对应的文档编号

二. 常用算法:

1. 递归: 只要是问题可以分成一层一层相同处理方式的子问题,就可以用递归。比如树的遍历.递归调用本质就是压栈和出栈的过程

2. 一般根据问题特点将问题转化,那时候用算法

三.排序算法: 

1. 冒泡排序: 双重循环,一个从头开始,一个i+1 --length-i

2. 选择排序:每次最大的在前面

3. 插入排序:每次插入到一个有序的序列中

4.快速排序,分治法。每次挑一个数,将list分为大于它的和小于它的。两头找,然后交换位置。

5.选择/插入/冒泡 n^2; 堆/归并nlogn;快速在中间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值