首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
作为人类高质量程序员,必须掌握哪些算法?
社区首页 >问答首页 >作为人类高质量程序员,必须掌握哪些算法?

作为人类高质量程序员,必须掌握哪些算法?

提问于 2021-09-07 08:28:50
回答 36关注 8查看 5.1K

数据结构、算法、计算机原理是编程和实践的根基,看似枯燥和基础,却具有最长久的生命力。

作为人类高质量程序员,写代码精髓就是领略数学之美

算法:

  • 排序算法:快速排序、归并排序、计数排序
  • 搜索算法:回溯、递归、剪枝
  • 图论:最短路径、最小生成树、网络流建模

.......

数据结构:

  • 数组和链表
  • 栈与队列
  • 树和图

.......

作为程序员的你,认为编程必须掌握哪些算法?快来分享你的见解吧!

内容要求

● 围绕算法,发表见解 50 字以上(需原创,禁止转载)

奖励

回答赞同数 TOP10 的用户将有机会获得精美定制小礼品一份

评选标准

  • 回答需符合活动中所提及的要求,符合社区规范
  • 请遵守社区规范,如有违规行为,一经发现即取消参与资格

评选结果 & 公示

腾讯云开发者社区小助手 9 月 10 日在获奖评论下通知答主,奖品将于30日内发放

更多精彩问答与定制好礼,尽请关注 【云+有奖问答专题】 \( ̄▽ ̄)/

已邀请
等2人回答

blueflyming

发布于 2021-09-02 09:29:42

一般来说,我们需要掌握的算法不多,像

排序算法:插入排序、冒泡排序、选择排序、快速排序等

搜索算法:深度优先、广度优先

贪心算法、动态规划算法等。

如果你是做数据科学的,那么你可能会接触到更多的算法,比如

决策树、逻辑回归、神经网络等。

算法本质上其实是九成的数学,加上一成的奇思妙想,再经过不断的测试、修改,最终简化运行逻辑,提供相对较优的解。

查看全部 36 条回答
为您推荐blueflyming回答过的其他问题

程序员过节指南:如何用代码做一个月饼?

blueflyming
# MoonCake.py print(''' ..*..*=\**. ..*,oo...=OO....**/o/ooo**,. ...**... .*=oOO...*OOO`...,OOOOO`.*oOO\. ..*...,/o]*. .*OOO....=O@O...,O@@O^.*/O@O\.*.. ..,o.. .*\OO. ..*OO...*=oO/...=O@O^..=O@@@O..,OO]]. ..=ooO. . .,oo....,oOOOOOOOOOOOO\/oo]**OOO@O^.*O@@@@OOo. ........\OO\. ...=**]oOOOOOOOOOO[[[[O[\`/OOOOOo]o\OOO@@@@OO`*,].. ..*,]]]*.....**...*,o/\o\]*,oOOOOOOoOOOOOOOOO@@@@@@@OO@O.\OO[,/OO@O^. ...**=OOO...*=OOOOOOOOOOOO/[/[\OO@@/*\@@@@@^..=@@@@OO`,oO`.oOOO@@@OOO** .*/*....*..**o`.*\]oOO]]]OOOOOO/,OOO.=/OO[`..*,/OOO\OOOoO@O.o@@@@@@OOo*=*.... .*/O`......,O^..,OOOOOO/[[\[[[*`,/O@`.OOOOOOO^.\O@@@@@^.OO@.\@@@@OOOOOOO]............ .*/oOO`....*oO..]OOOOOOo/OOoOOOO^\O@^.OO@O/[`.,\OOOOO]oOO@@.\OOOOO@O@@@@@O]............. .,]*=^,[,...=O`.*O//OOOO[[OO[[*`,,O@@OOOOOOOOO`\O@@@@@@@@@@.=O/O@@@@@@@@@@OO*........... ..,oo\***,***o/OO\.=OOOOOOOOOOOOOOOO.\O@@@@@@@OO@.*oOOOOOOOO\O.=O@OO@@@@@@@OOOOO.*......... .*/OOOOO`.....oOOO@.=O@@@O[[=O[[`***,\/O@O.]OOOOOOOOOOOO@OO`,o@O.O@@\OOO@@@@@@@@@O,`........ .*=o[[OOOOoo..*=.\O@`,OO@^.=\OOOOOOOOO@@@@^,oOOOO@@/.*/OOOOOOOO@O^\O@@,O@@@@@@@@@OO\o........ ...]]o]]]**,*,//O.=O@^,\O@^.,/@/[.,]/OOO@@@@=OOOOOO@O.,/@@@[[@@@@/../@@^=O@@@@@@@OOO/O^....... .=OOOOOOoooo.=oO.=O@O,\O@O.,/\oOOO@@@@@@@@@//O@..\O@\/OO@^.*/@OO^ .=O@O.OO@@@@@@@OOOO^....... ..,*oOO@OOOO..*oO.=O@@\OOOO^oOO@@@O[O@@@/[[OO``\O.=O.,oOO\* *,/*OO` ,O@@^=@@@@@@@@@\Oo^....... .....=oo[[**..,]oO^*oOOO[.*]oo*]O/..=.=O\o/OOO@.oO`/O^\O@^.,`./^=O@O^=OO@^O@@@@@@@@@@O/^*...... ...ooOoooo/*ooO^.\OO.**oOO/[,OOOo.,oOOOOoO@@.\O^=\O`=OO.,^.Oo,O@@O./O@^/O@@@@@@@@@@Oo^...... ..,OOOOOoo^..,O\,oOO`.=/OOOOOOOO.*oO@@`*\O@@.*O\.\OOOOO.=o.\o.\O@O.o@@/O@@@@@@@@@OOOoo*..... ..*oOOO@@OO`..*oO^.=OO..,,\]\`o^*./oo\,\\OOO@\/,o[oOO@@@.=\^=O^\O@@.OOOO@@@@@@@@@@@@OOO^..... .*=OO/[*..*,^/OoOO.=O\.]/OOO/.=OO^[\O@O^.=\@@@/.*/OOOOO@`/o\]/OO@@@\=@@@@@@@@@@@@@@@OOOo**... ..***/o\oooOOO..],.=O@.,oOO\O^[OO^,oOO`.,/OOOO.o/^=O@`/O\/O@./O@OOO@]O@@@@@@@@@@@@O@OOOo**... ...oOOOOOOOOOO/../OO@@`=\^\o^]]/OO.oOOOO.oO@@@^`/\=/O=OOOO@^./O@@@@@^O@@@@@@@@@@@@OOOOOo***.. .**=oOOO@O`..**oO^OO@O]``,oOO@@@^,,O@@O *O@@@^,oO=/^/O@@@.]OO@@O@@@^=O@@@@@@@@@O@@@OOOo****. ..,`=^/*..]//oOOO.`O@O./,o[OO@@@^ *o@OO..oO@@^.oO/OO//O@`/O@@@OO@O@^=@@@@@@@@@@O@@OOOoo***** ....*=o.\OOOOO@@/.*oO^.oO@O[[OOO\.*\OOO^.oO@@^,oO\OO@=@OO@@@@@@@OO@@O@@@@@@@@@OOOOOOOo^****. ..... .\OO@@@/..,oO@@\.*/O@`,oOO]*/O@OO,/OOOOOOOOO/\OOOOOOOOOOOOOOO@@@@@@@@@OOOOOOOOo^***** ... *=OO@/..*]O/\oOO`.*OO/`,\`]]oOOOOoOOOOOOOOOOOO@@O@@@@@@@@@@@@@@@@@@@@@@@OOOoOooo***** . .*OO`.]/OO@@\**o`/OOOOOO[OOOO@@@@@@@@@@@@@@@O//O@@@@@@@@@@@@@@@@@@@@@@@OOOOOOooo^**** .. ..*/./OO@@@@@@`..=oO@@@@.*O@OOOO\OOOOOOOOOOOOOO@@@@@@@@@@@@@@@@@@@@@@@@@@OOOOoooo^**** ....,\OOOOO[[`...,O@@@@O..=O@@@^.=O@@@@OO@@@@@@O@@@@@@@@@@@@@@@@@@@@@@@@@OOOOOoooo^**** .....,OOOOOoO]oOO@@@@/../O@@@@..\O@@@@,\@@@@@@@@@@@@@@@@@@@O@@@@@@@@@@OOOOOOooooo/**** ....**,=OOOO^oOO@@@^.,oO@@@@^..O@@@@@*\@@@@@@^O@@@@@@@@@@O@@@OO@OOOOOOOOOOOooooo^**** ...**.*[\O^..=OOO/.,/O@@@@^..oO@@@@O./O@@@@@OO@@@@@@@@@@@@@@O@OOOOOOOOOOOOooooo***** .......*.....=OO^,OO@@@O[../O@@@@@^./O@@@@O=O@@@@@@@@@@@@@@@OOOOOOOOOOOOoooooo***** ..............,OO@O@O/O/OOO@@O@@@@/`O@@@OO/O@@@@@@@@@OO@@@OOOO@@@@@OOOOooooooo^**** ........ .....**=OO@@@O@O@@@@@@@@@O/@@@@@@OO@@@@@@@@@@@@OOOOOO@@@@OOOOooooooo^***** ...... ...**]oO@@@@@@@@@@@@@@@@@@@@OOO@@@OOOOOOOOOOOOOOOOO@@@OOOOOooooooo`***** .. .....**]]/]/OOOO\O@@@@@@@@@@@@@OOOOOoOOOOOOOOOOOOO@@@OOOOOooooooo******* ......*,oooOoOOOOOO\,=OOOOooooooOOOOOoOoOOOOOO@@@@@@OOOOOoooooooo******* .......***\oooOOoooooooooOOoooooooOOooooOO@@@@@@@@OOOOOOooooooo//******* ......******o`***=oooooo[[o/ooooOOOO@@@@@@@@@OOOOOOOOoooooooo********* .......`.....**....***[,OO@@@@@@@@@@@@OOOOOOOOoooooooooo********* .[\OOOO\]]]/OOOOO@@@@@@@@@@@@@@OOOOOOOOooooooooooo********** ,\OOOOOOOOOOOO@@@@@@@@OOOOOOOOOOOoooooooooooo********** ''') image.png image.png
28人回答了此问题
为您推荐blueflyming的文章
【技术布局】从vert.x 5开始
一直觉得java开发太重了,想找一个轻量、靠谱的框架来完成一些个人的小项目,之前一直在关注vert.x,最近看他更新到了5.0.0.CR3版,简单入门一波。Vert.x 是一系列工具包,它可以在Java虚拟机上运行的响应式、非阻塞的异步应用程序,它涵盖了多个不同的组件,用于创建具有大量消息、大型事件处理、HTTP 交互等的应用程序。
2025-01-27
3420
【技术布局】Rust Axum 如何优雅的返回数据
最近在用rust写一套web脚手架,在定义返回结果的时候发现axum自带的返回写法挺丑的,所以打算简单封装下。这一部分使用到的库主要为:
2025-01-16
5450
相关文章
程序员必须掌握哪些算法和数据结构?
以下 5 个步骤总结了此方法,依次为如下,我们设计的实验必须是可以重现的,我们形成的假设必须是具有真伪的。
CSDN技术头条
2019/08/06
4560
程序员必须掌握哪些算法和数据结构?
程序员必须掌握的算法
作为程序员,掌握一些基本的算法是非常重要的,因为它们可以帮助你更高效地解决编程问题。以下是一些程序员必须掌握的基本算法:
楠羽
2023/10/17
2310
程序员必须掌握的算法有哪些?谈谈这这几年学过的算法
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过不错的文章给大家。大家也可以留言区补充。
帅地
2019/10/23
3.7K0
程序员必须掌握的算法有哪些?谈谈这这几年学过的算法
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过不错的文章给大家。大家也可以留言区补充。
乔戈里
2019/10/28
6430
程序员必须掌握哪些算法?算法与数据结构文章详细分类与整理!
为了让你对数据结构和算法能有个全面的认识,我画了一张图,里面几乎涵盖了所有数据结构和算法书籍中都会讲到的知识点。
五分钟学算法
2019/12/06
5920
Java程序员必须掌握的核心技能有哪些?
私下里,经常有一些读者问我:“二哥,作为一名软件开发者,我应该掌握哪些技能,才能被领导赏识呢?”说实话,我心目中很多选项,不少于 20 个,但我斟酌再三,只挑选了其中最能让你受益的 8 个,不仅能让领导赏识你,还能让领导给你升职加薪。
马士兵的朋友圈
2020/09/18
6380
作为程序员,必须知道的 Web 协议有哪些?
你会发现,这些问题其实都和 Web 协议密切相关。我常常听到身边人抱怨“学不动了”,之所以会这样,大多是因为没有掌握好互联网体系中的底层知识。这些知识点相对稳定,而其他时刻变化的知识点是构建在这些知识点之上的。一旦掌握好,就可以长久使用,并且保持快速学习的能力。
程序员历小冰
2019/05/14
3K0
作为程序员,必须知道的 Web 协议有哪些?
你会发现,这些问题其实都和 Web 协议密切相关。我常常听到身边人抱怨“学不动了”,之所以会这样,大多是因为没有掌握好互联网体系中的底层知识。这些知识点相对稳定,而其他时刻变化的知识点是构建在这些知识点之上的。一旦掌握好,就可以长久使用,并且保持快速学习的能力。
java思维导图
2019/05/14
4870
程序员那些必须掌握的排序算法(上)
现在的IT行业并不像以前那么好混了,从业人员过多,导致初级程序员过剩,这也间接导致了公司的招聘门槛越来越高,要求程序员掌握的知识也越来越多。 算法也是一个争论了很久的话题,程序员到底该不该掌握算法?不同的人有不同的答案,而事实上,很多公司都对算法有一定的要求,有些公司直接在面试的时候便会要求面试者手写算法题。这就对程序员的技术要求产生了很大的考验,所以面对如今的大环境,我们必须掌握算法,才能在今后的工作中占据一席之地。 那么接下来,我就简单介绍一下几个排序算法,希望对你们有所帮助。
wangweijun
2020/02/14
4600
程序员那些必须掌握的排序算法(下)
快速排序(Quicksort)是对冒泡排序的一种改进。 快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 演示:
wangweijun
2020/02/14
4210
程序员必须掌握的8大排序算法
分类: 1)插入排序(直接插入排序、希尔排序) 2)交换排序(冒泡排序、快速排序) 3)选择排序(直接选择排序、堆排序) 4)归并排序 5)分配排序(基数排序) sort.jpg 一、直接插入排序 (
海天一树
2018/04/17
9680
程序员必须掌握的8大排序算法
云原生时代,程序员应该掌握哪些能力?
云原生可以说是目前最火热的一个技术概念,它改变了我们对开发、部署和操作应用程序的思考方式。
Guide哥
2023/01/11
1.1K0
Java常用排序算法/程序员必须掌握的8大排序算法
1)插入排序(直接插入排序、希尔排序) 2)交换排序(冒泡排序、快速排序) 3)选择排序(直接选择排序、堆排序) 4)归并排序 5)分配排序(基数排序)
哲洛不闹
2018/09/19
6070
Java常用排序算法/程序员必须掌握的8大排序算法
程序员算法面试中,必须掌握的数组理论知识
数组是非常基础的数据结构,在面试中,考察数组的题目一般在思维上都不难,主要是考察对代码的掌控能力
代码随想录
2020/06/12
3840
程序员必须要掌握的十大经典算法
快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。
程序员互动联盟
2018/03/15
7K0
程序员必须要掌握的十大经典算法
对话 Max Tegmark:掌控权必须掌握在人类手中
8月26日,集智俱乐部与腾讯研究院共同举办“AIS²系列学术报告和研讨活动”沙龙,共同提出AIS²倡议,意指AI+Society与AI+Science这两大如火如荼的前沿领域,并预言人工智能即将在跨学科研究中形成的集体涌现。
小腾资讯君
2023/09/05
2580
前端面试哪些是必须要掌握的
Cookie是最早被提出来的本地存储方式,在此之前,服务端是无法判断网络中的两个请求是否是同一用户发起的,为解决这个问题,Cookie就出现了。Cookie的大小只有4kb,它是一种纯文本文件,每次发起HTTP请求都会携带Cookie。
loveX001
2022/09/23
7890
JVM垃圾回收之垃圾收集算法,程序员必须掌握的知识
解释下,堆大小=新生代+老年代,新生代与老年代的比例为1:2,新生代细分为一块较大的Eden空间和两块较小的Survivor空间,分别被命名为from和to。
黎明大大
2020/09/08
4450
JVM垃圾回收之垃圾收集算法,程序员必须掌握的知识
作为一个程序员一定要掌握的算法之遗传算法
        一个程序员一生中可能会邂逅各种各样的算法,但总有那么几种,是作为一个程序员一定会遇见且大概率需要掌握的算法。今天就来聊聊这些十分重要的“必抓!”算法吧~,就比如说遗传算法啊
会洗碗的CV工程师
2023/10/14
6460
作为一个程序员一定要掌握的算法之遗传算法
学点程序员必须掌握的Linux知识
本文关于学习Linux的目的并不是让读者如运维人员那样去精通Linux,而是掌握一些java开发工程师所具备的Linux操作技能。因为很多java程序员在公司负责一个项目的过程中总是避免不了将项目打包后部署到Linux服务器,这时如果你不懂一点与项目部署相关的Linux命令,那你大概只会被你的老板当成一名初级程序员。
用户3587585
2022/09/21
6790
学点程序员必须掌握的Linux知识

相似问题

【有奖问答】 作为程序员,2023年有哪些高光时刻?(已完结)

383.8K

机器学习有哪些算法?

1437

【有奖问答】程序员有哪些浪漫行为?(已完结)

22876

【有奖问答】程序员有哪些行业黑话?(已完结)

251.8K

【有奖问答】程序员有哪些好物分享?(已完结)

16875
相关问答用户
中建数科 | 技术总监架构部总经理擅长3个领域
公司公司公司公司公司公司 | 职务职务职务职务职务职务擅长3个领域
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档