版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、用算法思维来写程序程序=算法+数据结构深度思考比勤奋工作更重要深度思考比勤奋工作更重要算法无处不在,只是很隐蔽 专业性,时空复杂度分析,学会应用大欧记法。 大公司招聘算法考试的启发,他们的底线和节操。 隐蔽性,透过现象看本质,ACM队的启发。 我们大量视而不见的O(A*B)O(A+B)的错误,我们需要饿补。 TeamLeader的责任与工程师文化风气,鱼|渔。 代码中命名,风格之类的不同写法,可以宽容。 不能容忍的界限在于复杂度。再叨叨一遍 函数增长率,A+B没问题,A*B要严判监控结果O(N2)的危害性 O(N)的情况下,增加一台服务器,产能可以提高一倍。 (N/K)2当NK2时性能低于O(
2、N),假设N是100的话,需要10台服务器,才能低上一台 当101个数据,10台就比一台还慢。实际上我们数据远远超过100。这工具已经在用车,地面,团队,机酒等部门开始使用了。我们用车这边扫出上千嫌疑点,有一半甄别可优化。我们携程的代码中有大量Linq误用的地方,存在O(N2)问题,可以轻松优化到O(N)监控只能发现被引爆的地雷,更多的还隐藏在其中。O(N)的情况下,增加一台服务器,产能可以提高一倍。O(N2)的情况下,增加一台服务器,产能只能提高+1/N,因此增加多少服务器都解决不了算法的伤。这种浪费,好比妈妈给了我1万块,我撕掉了9900块,只剩100块。好比红十字会拿到了1亿,花100万
3、建了希望小学,其余9900万包养了郭美美。几种优化技巧 简单Equals问题,多利用哈希表ContainsKey的O(1)特性,打表一词的由来。 组合键问题,联合Key的设计制作。 嵌套查询与缓存。 范围查找的打表,Log(N)特性。 字符串Like问题,字典树。 组合复杂问题,位运算。 提高可读性,避免驾驭Linq埋地雷反面案例一,简单Equals问题 varresult=orderList.Where(p=orderIdList.Contains(p.OrderId);Aggregate,All,Any,AsEnumerable,AsParallel,AsParallel,AsQuerya
4、ble,AsQueryable,Average,Cast,Concat,Contains,Count,DefaultIfEmpty,Distinct,ElementAt,ElementAtOrDefault,Except,First,FirstOrDefault,GroupBy,GroupJoin,Intersect,Last,LastOrDefault,LongCount,Max,Min,OfType,OrderBy,OrderByDescending,Reverse,Select,SelectMany,SequenceEqual,Single,SingleOrDefault,Skip,Sk
5、ipWhile,servable,Sum,Take,TakeWhile,ToDictionary,ToList,ToLookup,Union,Where,Zip反面案例二,组合键foreach(CHFSearchProductDescDTOdescInfoinresSearch.ProductDescInfoList)293294boolDescFlag=false;295foreach(CHFOrderProductDescDTOdescOrderInfoinreqCreate.ProductInfo.ProductDescInfoList)296297if(descInfo.DescTit
6、le=descOrderInfo.DescTitle&298descInfo.Content=descOrderInfo.Content&299descInfo.Title=descOrderInfo.Title)300301DescFlag=true;302303304/没有相等的数据305if(!DescFlag)306307Assert.IsTrue(false);308范围打表 折半二分查找的O(LgN)特性 O(A+B)读取+O(A*LgA)排序+O(B*LgA)二分 远远小于O(A*B) 适用于.Contains(a=a3)取交集的技巧 哈希 微软的InterSect方法IEnum
7、erable 位运算代表排列组合,取交集的技巧 并查集FindUnion、舞蹈链模糊字符串、缓存结构等打表技巧 Trie字典树ForLike 高维度降维办法 Redis等缓存结构 以上有些暂时用不上,因为高铁接地铁,不在一条总线上,局部优化没意义,需要知道有这么回事建议阅读 Weiss算法与数据结构或任何该类书籍 刘汝佳黑皮书或任何该类书籍 MSDN关于Collections下边复杂度分析结论 MSDN关于IQueryAble,IEnumable部分 Redis文档关于各种结构体的复杂度结论。 Google和BAT算法类面试题,思考用人底线标准。 深度思考比勤奋工作更重要深度思考比勤奋工作更重要自我介绍潘宇光,2007-2009微软M
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《分子的立体构型》课件
- 2026年少先队应知应会知识竞赛考试题库(含答案)
- 2026年建筑起重司索信号工模拟考试题(含答案)
- 2026年语文三升四模拟试题及答案详解
- 2026年操作系统题库(含答案)
- 今天是你的生日中国课件
- 2026年中国羽绒被行业市场分析与投资机遇预测报告(定制版)
- 2026年沙治沙职业技术学院辅导员招聘考试笔试题库(含答案)
- 个人贷款考模拟试题目及答案详解
- 2026年小升初衡中模拟试题及答案详解
- T CCIAT 0112‑2026 灌注桩缺陷修复技术标准(征求意见稿)
- 城市餐厨垃圾处理设施施工方案及技术措施
- 管道沟槽开挖工程监理实施细则
- BG4型正压氧气呼吸器课件
- 进户门安装合同协议书
- 7.1.1 传染病及其预防 教学设计-人教版生物八年级下册
- 食管异物穿孔护理查房
- 村卫生室标准化建设课件
- 《自动控制原理》实验教案
- 客服基础考试试题及答案
- 人教版初中英语初一英语下册《Wheres the post office》教案及教学反思
评论
0/150
提交评论