网易首页 > 网易号 > 正文 申请入驻

程序员都应该精通的六种算法,你会了吗?

0
分享至

对于一名优秀的程序员来说,面对一个项目的需求的时候,一定会在脑海里浮现出最适合解决这个问题的方法是什么,选对了算法,就会起到事半功倍的效果,反之,则可能会使程序运行效率低下,还容易出bug。因此,熟悉掌握常用的算法,是对于一个优秀程序员最基本的要求。

那么,常用的算法都有哪些呢?一般来讲,在我们日常工作中涉及到的算法,通常分为以下几个类型:分治、贪心、迭代、枚举、回溯、动态规划。下面我们来一一介绍这几种算法。

一、分治算法

分治算法,顾名思义,是将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。

分治算法一般分为三个部分:分解问题、解决问题、合并解。

分治算法适用于那些问题的规模缩小到一定程度就可以解决、并且各子问题之间相互独立,求出来的解可以合并为该问题的解的情况。

典型例子比如求解一个无序数组中的最大值,即可以采用分治算法,示例如下:

def dividAndConquer(arr,leftIndex,rightIndex):

if(rightIndex==leftIndex+1 || rightIndex==leftIndex){

return Math.max(arr[leftIndex],arr[rightIndex]);

int mid=(leftIndex+rightIndex)/2;

int leftMax=dividAndConquer(arr,leftIndex,mid);

int rightMax=dividAndConquer(arr,mid,rightIndex);

return Math.max(leftMax,rightMax);

二、贪心算法

贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。

贪心算法的基本思路是把问题分成若干个子问题,然后对每个子问题求解,得到子问题的局部最优解,最后再把子问题的最优解合并成原问题的一个解。这里要注意一点就是贪心算法得到的不一定是全局最优解。这一缺陷导致了贪心算法的适用范围较少,更大的用途在于平衡算法效率和最终结果应用,类似于:反正就走这么多步,肯定给你一个值,至于是不是最优的,那我就管不了了。就好像去菜市场买几样菜,可以经过反复比价之后再买,或者是看到有卖的不管三七二十一先买了,总之最终结果是菜能买回来,但搞不好多花了几块钱。

典型例子比如部分背包问题:有n个物体,第i个物体的重量为Wi,价值为Vi,在总重量不超过C的情况下让总价值尽量高。每一个物体可以只取走一部分,价值和重量按比例计算。

贪心策略就是,每次都先拿性价比高的,判断不超过C。

三、迭代算法

迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程。迭代算法是用计算机解决问题的一种基本方法,它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。最终得到问题的结果。

迭代算法适用于那些每步输入参数变量一定,前值可以作为下一步输入参数的问题。

典型例子比如说,用迭代算法计算斐波那契数列。

四、枚举算法

枚举算法是我们在日常中使用到的最多的一个算法,它的核心思想就是:枚举所有的可能。枚举法的本质就是从所有候选答案中去搜索正确地解。

枚举算法适用于候选答案数量一定的情况。

典型例子包括鸡钱问题,有公鸡5,母鸡3,三小鸡1,求m钱n鸡的所有可能解。可以采用一个三重循环将所有情况枚举出来。代码如下:

五、回溯算法

回溯算法是一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。

许多复杂的,规模较大的问题都可以使用回溯法,有“通用解题方法”的美称。

典型例子是8皇后算法。在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问一共有多少种摆法。

回溯法是求解皇后问题最经典的方法。算法的思想在于如果一个皇后选定了位置,那么下一个皇后的位置便被限制住了,下一个皇后需要一直找直到找到安全位置,如果没有找到,那么便要回溯到上一个皇后,那么上一个皇后的位置就要改变,这样一直递归直到所有的情况都被举出。

六、动态规划算法

动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。

动态规划算法适用于当某阶段状态给定以后,在这阶段以后的过程的发展不受这段以前各段状态的影响,即无后效性的问题。

典型例子比如说背包问题,给定背包容量及物品重量和价值,要求背包装的物品价值最大。

以上就是程序员经常使用的六种经典算法,读者们还了解哪些常用的优秀算法吗?欢迎留言哦。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
14分大逆转,又一组天王山!东契奇3双丢关键罚球 欧文哑火仅9分

14分大逆转,又一组天王山!东契奇3双丢关键罚球 欧文哑火仅9分

锅子篮球
2024-05-14 12:22:50
A股:做好准备吧!如果不出意外的话,明天周三历史还将重现!

A股:做好准备吧!如果不出意外的话,明天周三历史还将重现!

彩云的夕阳
2024-05-14 11:50:35
海藻和小贝每次5分钟和宋思明坚持40分钟。海藻上瘾是最大的报复

海藻和小贝每次5分钟和宋思明坚持40分钟。海藻上瘾是最大的报复

娱乐白月光
2024-05-14 10:52:44
布朗尼身高严重缩水!选他不等于得到詹皇 湖人仍尝试让父子同队

布朗尼身高严重缩水!选他不等于得到詹皇 湖人仍尝试让父子同队

罗说NBA
2024-05-14 04:31:31
18岁黄多多高中毕业照曝光,穿蓝色礼服笑容明艳,或即将出国留学

18岁黄多多高中毕业照曝光,穿蓝色礼服笑容明艳,或即将出国留学

娱絮
2024-05-13 10:37:51
网友吵翻!河北一游泳馆多名员工喝泳池水,回应:自愿的,为证明水安全

网友吵翻!河北一游泳馆多名员工喝泳池水,回应:自愿的,为证明水安全

潇湘晨报
2024-05-14 13:16:09
普京将访华?中方回应

普京将访华?中方回应

新京报
2024-05-13 16:48:12
血常规报告单看这5个指标够了!如何看懂血常规?全的血常规解读

血常规报告单看这5个指标够了!如何看懂血常规?全的血常规解读

荆变果
2024-04-25 14:46:12
中国楼市将面临巨变!懂行人预测:可能会出现这5个变化!

中国楼市将面临巨变!懂行人预测:可能会出现这5个变化!

庞明说财经
2024-05-14 10:03:28
印度最贫贱的“水妻”!丈夫把妻子当“水龙头”,为取水不择手段

印度最贫贱的“水妻”!丈夫把妻子当“水龙头”,为取水不择手段

番茄说史聊
2024-05-13 14:46:58
和越南的同学聊天,他说越南一夜之间被美国收割干净了

和越南的同学聊天,他说越南一夜之间被美国收割干净了

陈博世财经
2024-05-13 20:21:58
正式宣布“拥抱”华为!万亿市值巨头表示,全力支持华为鸿蒙系统

正式宣布“拥抱”华为!万亿市值巨头表示,全力支持华为鸿蒙系统

番茄说史聊
2024-05-13 14:33:33
中央拟定:农村宅基地可以自由买卖,满足3个条件就可以交易

中央拟定:农村宅基地可以自由买卖,满足3个条件就可以交易

天下纵览
2024-05-14 09:44:32
太离谱了!商铺停业却发现燃气欠费近5亿,老板:我当时人都懵了

太离谱了!商铺停业却发现燃气欠费近5亿,老板:我当时人都懵了

看晓天下事
2024-05-13 21:41:52
滑天下之大稽:人民代表不为人民,反而强烈要求自来水公司涨价!

滑天下之大稽:人民代表不为人民,反而强烈要求自来水公司涨价!

嘿哥哥科技
2024-05-13 13:35:06
月卖近两万成燃油SUV销冠!探店奔驰GLC:降价够狠果然躺赢

月卖近两万成燃油SUV销冠!探店奔驰GLC:降价够狠果然躺赢

蜗牛车志V
2024-05-13 14:31:49
144分钟鏖战!澳网冠军抢7绝杀,郑钦文PK高芙,约战世界第1?

144分钟鏖战!澳网冠军抢7绝杀,郑钦文PK高芙,约战世界第1?

刘姚尧的文字城堡
2024-05-14 07:06:24
亚洲首个“永久中立国”诞生,联合国183个国家全票通过!

亚洲首个“永久中立国”诞生,联合国183个国家全票通过!

星辰故事屋
2024-05-13 17:13:32
重磅!英特尔、高通、英伟达集体表态“科技脱钩”

重磅!英特尔、高通、英伟达集体表态“科技脱钩”

涛涛生活搞笑
2024-05-14 09:23:42
关于太平军,我小时候奶奶的一个说法让我有所思考

关于太平军,我小时候奶奶的一个说法让我有所思考

何事无休念汉江
2024-05-12 10:32:21
2024-05-14 14:42:44
活在信息时代
活在信息时代
信息时代的技术与社会伦理
639文章数 779关注度
往期回顾 全部

科技要闻

OpenAI再压谷歌,最强模型GPT-4o免费发布

头条要闻

媒体:普京若访华 中俄或重点关注两大议题

头条要闻

媒体:普京若访华 中俄或重点关注两大议题

体育要闻

戈登,这次我能拿10分了吗?

娱乐要闻

《歌手》引爆全网,众多歌手请战!

财经要闻

日元狂贬!日本央行终于出手

汽车要闻

不到十万纯电SUV 比亚迪元UP主打一个卷

态度原创

艺术
家居
数码
本地
公开课

艺术要闻

新绎美术馆价值体系1+1=3?张子康激活“梦廊坊”社会化艺术生态

家居要闻

凝固音乐 时间不在意识轴中

数码要闻

LG 45GS95QE 带鱼屏显示器开售:2K 240Hz OLED,9999 元

本地新闻

云游中国|哪吒小镇,潮玩新地标!

公开课

父亲年龄越大孩子越不聪明?

无障碍浏览 进入关怀版