java学习基地

微信扫一扫 分享朋友圈

已有 1128 人浏览分享

程序员挑战:如何让一个技术小白搞懂二分法检索?

[复制链接]
1128 0
本帖最初由 进修派 于 2020-11-29 21:54 编纂


正在背萌新引见计较机科教时,传授根本算法多是很具应战性的部门之一。它介于假定性成绩战笼统性思想之间,非常顺手。但大概能够没必要那帽咖易。有一个小寡的概念:只需能明晰天机关成绩,任何一名擅长考虑的人皆能够对一个根本算法成绩提出优良的处理计划。


11.jpg


没有信赖吗?能够找一个伴侣实验一下。我敢赌钱,即便他们出有任何手艺布景,最初他们也能开辟出一个两分法检索的算法,而且了解那个观点。


传统意义上的两分法检索成绩

以下是Geeks for Geeks上给出的两分法检索的界说:“给定一个包罗n个元素的排序数组arr[],编写一个函数去搜刮arr[]中的给定元素x。”


即便我是硬件工程专业,但读到那里时仍然会头痛。假如用那么庞大的言语来说述,听者包管会一直朵进,另外一直朵出。没有要那么做。


机关好成绩是胜利的一半。假如念用一种没有那末专业的办法去发问两分法检索成绩,以下是一种很好的办法:“您有一年夜盒如出一辙的鸡蛋,念要测试那些鸡蛋的硬队耄假定您正在冶100层的办公楼里事情,要找到把鸡蛋扔下来借残缺无益的最下楼层。怎样尽快做到那一面?”


固然没必要完整分歧,但正在构建成绩时,该当记着以下提醒。


本领1:把成绩看成取编程无闭的成绩去交换

关于非手艺职员来讲,计较机科教是很“恐怖”的。信赖卧冬由于我深有其感。已经有冶工夫,我对编程的理解仅限于电视节目中播放的庸呢乌客进犯的片断。我对它一窍不通,只能一脸茫然天听他人注释甚么是法式或算法。


现在,做为一位硬件开辟职员,我意想到编程实践上并出有第一眼看起去那末易。计较机语法十分有误导性。不管您能否有手艺布景,只需您擅长考虑,皆能够念出很棒的算法处理计划。


那末我的倡议是甚么呢?那便是没有要讲代码。别把它当做是一个编程成绩。那会把他们吓坏的。


22.jpg

本领2:操纵知识

“设想一个严厉递删的┞符数值的列表…”等涤耄疑息过载了。您也一样。我的倡议是:没有要注释,让知识帮您做那件事吧。


是的,两分法检索请求搜刮列表需根据必然的挨次战标的目的布列,但没必要用那末多的术语去表达。


我正在机关成绩时,经由过程利用冶修建去类比,将每一个潜伏值(楼层数)皆掌握正在一个严厉递加的区间。由于那是理想天下中人们心领神会的知识。


每一个人皆明白,假如工具从下处失落降,重力只会把它推背一个标的目的——下圆。经由过程知识,人们明白,假如一样工具从某一楼层摔下借能残缺无益,那末正在比该楼层低的任何一个楼层也皆没有会摔碎。


知识能比我梅狳好天注释成绩,好汉名用它。究竟结果,每一个人皆更情愿处理合用于理想天下的成绩。


本领3:制止利用过量的手艺术语

您是一个硬件工程师或数教专业狄拽死,您喜好用您梅岽纯的术语交换。但战其他范畴一样,您天天皆正在道的止话对小黑来讲险些毫偶然义。便像一个中科大夫正在背病裙释的时分,会尽量简化阐明,以是,该当只管制止利用计较机科教范畴独有的止话。


记着,您实邻教他人一个观点,而没有是夸耀专业常识或教他们手艺术语。

制止利用“临界”等字眼。固然“临界值”正在算法天下中能够意义严重,但年夜大都非手艺职员其实不能意想到那一面。您会留意到我正在上文中请求的是最下楼层,而没有是“临界楼层”。


该当利用简朴的用语,尽量用能让非手艺职员听大白的言语报告。


是的,您能够界说“临界”那个词,但那又有甚么意义呢。那个词关于成绩自己是没必要要的,它只是增加了一个会分离留意力的疑息。关于那些有没必要要界说的词,请跳过它们。

别的您会留意到,我构建成绩时利用的是100层,而没有是两分法检索成绩中经常使用的n层。


计较机科教家能够风俗于把每一个成绩中的“n”看做史崤括成绩巨细的一种办法,但年夜大都人以为“n”只是问卷中“no”的缩写。即便用随便值机关的成绩能够合用于遍及状况,但随便值没有会改动成绩的素质。


假如念让他人了解一个成绩,便给他们一个很好的┞符数做为出发点,如许他们的年夜脑便会专注正在那个成绩擅埽而随便数字很易观点化。让他们专注于脚头的成绩,而非专注于可视化随便值“n”。


除非尽对须要,不然没有要将成绩遍及化。先处理成绩,再按照需求停止归纳综合。那是我处理任何算法成绩的本领,但关于同完整出有手艺布景的裙道时,那一面便特别主要。


小揭士:设身处天为他们着念

耐烦面。做一位您不断念正在口试中盼望碰见的那种口试民,正在需求时提出提醒性成绩。


出有人喜好待正在本天没有动,没有明白现位步该来那里,那使人懊丧战为难。假如有人堕入窘境,请协助他们。问他们一个成绩,让他们找到准确的标的目的。大概,假如他们的处理计划是毛病的,给他们一个没有是最劣的处理计划,而没有是开门见山天报告他们谜底。


设身处天为一个出有手艺布景的人想一想,请他人去处理鸡蛋失落降的成绩会很故意思。您会感应惊奇,本来那末多对编程一窍不通的人能处理算法成绩。



举报 使用道具

回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

0

关注

0

粉丝

138

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Archiver|手机版|java学习基地 |网站地图

GMT+8, 2021-3-3 23:16 , Processed in 0.328125 second(s), 30 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.