1 / 16
文档名称:

编程之法-面试和算法心得,pdf.docx

格式:docx   大小:31KB   页数:16页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

编程之法-面试和算法心得,pdf.docx

上传人:qi1920809 2019/6/23 文件大小:31 KB

下载得到文件列表

编程之法-面试和算法心得,pdf.docx

相关文档

文档介绍

文档介绍:编程之法:面试和算法心得,pdf 篇一:《程序员编程艺术:面试和算法心得》第二部分算法心得第四章查找匹配有序数组的查找题目描述给定一个有序的数组,查找某个数是否在数组中,请编程实现。分析与解法一看到数组本身已经有序,我想你可能反应出了要用二分查找,毕竟二分查找的适用条件就是有序的。那什么是二分查找呢? 二分查找可以解决(预排序数组的查找)问题:只要数组中包含T(即要查找的值),那么通过不断缩小包含T的范围,最终就可以找到它。其算法流程如下: 一开始,范围覆盖整个数组。将数组的中间项与T进行比较,如果T比数组的中间项要小,则到数组的前半部分继续查找,反之,则到数组的后半部分继续查找。如此,每次查找可以排除一半元素,范围缩小一半。就这样反复比较,反复缩小范围,最终就会在数组中找到T,或者确定原以为T所在的范围实际为空。对于包含N个元素的表,整个查找过程大约要经过logN次比较。此时,可能有不少读者心里嘀咕,不就二分查找么,太简单了。然《编程珠玑》的作者JonBentley曾在贝尔实验室做过一个实验,即给一些专业的程序员几个小时的时间,用任何一种语言编写二分查找程序(写出高级伪代码也可以),结果参与编写的一百多人中:90%的程序员写的程序中有bug(我并不认为没有bug的代码就正确)。也就是说:在足够的时间内,只有大约10%的专业程序员可以把这个小程序写对。但写不对这个小程序的还不止这些人:而且高德纳在《计算机程序设计的艺术第3卷排序和查找》第节的“历史与参考文献”部分指出,虽然早在1946年就有人将二分查找的方法公诸于世,但直到1962年才有人写出没有bug的二分查找程序。你能正确无误的写出二分查找代码么?不妨一试,关闭所有网页,窗口,打开记事本,或者编辑器,或者直接在本文评论下,不参考上面我写的或其他任何人的程序,给自己十分钟到N个小时不等的时间,立即编写一个二分查找程序。要准确实现二分查找,首先要把握下面几个要点: 关于right的赋值 oright=n-1=>while=>right=middle-1; oright=n=>while=>right=middle; middle的计算不能写在while循环外,否则无法得到更新。以下是一份参考实现: intBinarySearch { intleft=0; intright=n-1; //如果这里是intright=n的话,那么下面有两处地方需要修改,以保证一一对应://1、下面循环的条件则是while //2、循环内当array[middle]>value的时候,right=mid while//循环条件,适时而变{ intmiddle=left+>>1);//防止溢出,移位也更高效。同时,每次循环都需要更新。 if { right=middle-1;//right赋值,适时而变} elseif { left=middle+1; } else returnmiddle; //可能会有读者认为刚开始时就要判断相等,但毕竟数组中不相等的情况更多//如果每次循环都判断一下是否相等,将耗费时间} return-1; } 总结编写二分查找的程序时如果令`left篇二:[程序员如何快速准备面试中的算法程序员如何快速准备面试中的算法前言我决定写篇短文,即为此文。之所以要写这篇文章,缘于微博上常有朋友询问,要毕业找工作了,如何备战算法。尽管在微博上简单梳理过,如下图所示: 但因字数限制,许多问题无法一次性说清楚,故特撰此文着重阐述下:程序员如何快速准备面试中的算法,继而推荐一些相关的书籍或资料。顺便也供节后跳槽、3月春季招聘小高潮、及6月毕业找工作的朋友参考。备战面试中算法的五个步骤对于立志进一线互联网公司,同时不满足于一辈子干纯业务应用开发,希望在后端做点事情的同学来说,备战面试中的算法,分为五个步骤,如下:1、掌握一门编程语言首先你得确保你已掌握好一门编程语言: C的话,&《C程序设计语言》,和《C和指针》; C++则推荐《C++Primer》,《深度探索C++对象模型》,《EffectiveC++》。掌握一门语言并不容易,不是翻完一两本书即可了事,语言的细枝末节需要在平日不断的编程练****中加以熟练。 2、过一遍微软面试100题系列我从20XX年起开始整理微软面试100题系列,见过的题目不可谓不多,但不管题目怎般变化,依然是那些常见的题型和考察点,当然。不考察任何知识点。纯粹考察编程能力的题目也屡见不鲜。故不管千变万化,始终不离两点:①看你基本知识点的掌握情况;②编程基本功。而当你看了一遍微软面试100题之后(不要求做完,且这个系列的有些答案存在不少问题,建议以编程艺术github版为准),你自会意识到:数据结构和算法