Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
作为人类高质量程序员,必须掌握哪些算法?
社区首页 >问答首页 >作为人类高质量程序员,必须掌握哪些算法?

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

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

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

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

算法:

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

.......

数据结构:

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

.......

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

内容要求

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

奖励

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

评选标准

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

评选结果 & 公示

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

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

已邀请
等2人回答

Mintimate

精选回答

发布于 2021-09-03 01:50:02

确实挺看个人的,但是我觉得,最少基本的数据结构需要知道吧。比如:红黑树、深度优先还是广度优先。在日常使用时候,一些语言封装的算法需要了解,比如:Java的sort()排序算法。


排序算法

说到排序算法,这个我觉得是一定要了解的,使用频率和算法优化也最为明显。还是java的sort()方法。平时使用,可能就是一个数组或链表(如:Arraylist),调用sort()方法:

代码语言:javascript
运行
AI代码解释
复制
int[] list={9,2,3,1,5,6,9,8};
// Java Sort方法
Arrays.sort(list);
for (int temp:list) {
    System.out.print(temp+" ");

或:

代码语言:javascript
运行
AI代码解释
复制
List <Integer> list=new ArrayList<>();
list.add(3);
list.add(2);
list.add(5);
// Java Sort方法
list.sort(Comparator.naturalOrder());
for (int temp:list) {
    System.out.print(temp+" ");
}

但是,真的每个人都要看Arrays的sort排序底层么?这个算法,是使用快排或双轴快速排序等多种排序方法,以int类型排序为例,使用的是双轴快速排序(DualPivotQuicksort):

JDK11 Arrays的sort方法
JDK11 Arrays的sort方法

DualPivotQuicksort我认为已经是非常好的排序算法了,能看懂的话,也算入门的高质量程序员了吧╮( ̄▽ ̄"")╭。算法的解析,可以参考:https://rerun.me:

Array sort
Array sort

小结

总之,我认为程序员,必须掌握的算法一定要掌握最基本的数据结构,其次是能理解许多使用广泛的排序算法(比如:java Arrays sort)。

以上,纯属个人观点嗷(*≧ω≦)

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

《黑神话:悟空》有哪些值得关注的游戏技术?

提问于 2021-08-253.6K
Mintimate
还记得2013年的《斗战神》么?由冯骥(Yocar)作为主策划,杨奇作为美术设计一款优秀游戏。当时优秀的剧情,和游戏体验一骑绝尘。而现在,又是冯骥和杨奇大佬作为策划,开发《黑神话:悟空》更是未来可期。优秀的剧情不多说,网上解析很多,我们看看《黑神话:悟空》的游戏引擎。 这次我重点说一下游戏引擎: 另外作为一个非专业游戏开发,只是玩过一些游戏开发的软件。以下内容均不专业,仅仅作为一名游戏热爱者的业余评论 最开始《黑神话》使用虚幻4游戏引擎,之后升级为更强大的虚幻5平台,游戏引擎提供了更大的扩展性,让开发可以在这个“毛坯房”内,尽情“装修”(发挥)。虚幻5,两个新的技术“Nanite”(纳米石)和“Lumen”(流明)。 Nanite 通俗点,Nanite技术允许开发者创造无限接近于现实的细节。比如:PV出场时候的的佛像 纳米石.jpg 细节十分的好,应该是使用了虚幻5的Nanite进行建模。 Lumen 这个可以理解为全局的“光影”,从PV开画质来看应该是虚化5的“Lumen”技术。 “雁过留痕” 当然,我觉得游戏里面最细节的,就是“雁过留痕”的雪地。不管是人物脚步,还是人物武器,都会对雪地留下痕迹: 雪地.jpg 当然,更多游戏细节肯定有的。但是我主要是在畅想游戏的剧情,要知道,期待一个全新的“西游记”。 ---- 最后,这也应该是目前第一款基于虚幻5引擎开发的3A大作真机演示。国外网友都啧啧称赞。而使用新的引擎,必然会出现很多兼容性问题,虚幻5又是刚刚发布,很多bug需要和Epic沟通协调,可以想到背后开发的艰难。开发团队加油嗷。
13人回答了此问题
为您推荐Mintimate的文章
告别第三方工具!macOS Terminal 直接查看更真实的电池健康度
起因是之前发现 21 款的 MBP 电池不耐用了,所以就去 Apple Store 上检测了一下电脑;检测后电池寿命是 82%,还不能换电池……
2025-07-06
1700
网站如何适配暗色模式并实现手动、自动切换
那么,我们自己的网站如何适配暗色/亮色模式呢?首先说一下最基础的媒体查询,然后带大家了解一下我的适配方案(纯JS、CSS和HTML的前端操作)。
2021-02-01
9.5K0
相关文章
程序员必须掌握哪些算法和数据结构?
以下 5 个步骤总结了此方法,依次为如下,我们设计的实验必须是可以重现的,我们形成的假设必须是具有真伪的。
CSDN技术头条
2019/08/06
4470
程序员必须掌握哪些算法和数据结构?
程序员必须掌握的算法
作为程序员,掌握一些基本的算法是非常重要的,因为它们可以帮助你更高效地解决编程问题。以下是一些程序员必须掌握的基本算法:
楠羽
2023/10/17
2090
程序员必须掌握的算法有哪些?谈谈这这几年学过的算法
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过不错的文章给大家。大家也可以留言区补充。
帅地
2019/10/23
3.6K0
程序员必须掌握的算法有哪些?谈谈这这几年学过的算法
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过不错的文章给大家。大家也可以留言区补充。
乔戈里
2019/10/28
6340
程序员必须掌握哪些算法?算法与数据结构文章详细分类与整理!
为了让你对数据结构和算法能有个全面的认识,我画了一张图,里面几乎涵盖了所有数据结构和算法书籍中都会讲到的知识点。
五分钟学算法
2019/12/06
5820
Java程序员必须掌握的核心技能有哪些?
私下里,经常有一些读者问我:“二哥,作为一名软件开发者,我应该掌握哪些技能,才能被领导赏识呢?”说实话,我心目中很多选项,不少于 20 个,但我斟酌再三,只挑选了其中最能让你受益的 8 个,不仅能让领导赏识你,还能让领导给你升职加薪。
马士兵的朋友圈
2020/09/18
6270
作为程序员,必须知道的 Web 协议有哪些?
你会发现,这些问题其实都和 Web 协议密切相关。我常常听到身边人抱怨“学不动了”,之所以会这样,大多是因为没有掌握好互联网体系中的底层知识。这些知识点相对稳定,而其他时刻变化的知识点是构建在这些知识点之上的。一旦掌握好,就可以长久使用,并且保持快速学习的能力。
程序员历小冰
2019/05/14
3K0
作为程序员,必须知道的 Web 协议有哪些?
你会发现,这些问题其实都和 Web 协议密切相关。我常常听到身边人抱怨“学不动了”,之所以会这样,大多是因为没有掌握好互联网体系中的底层知识。这些知识点相对稳定,而其他时刻变化的知识点是构建在这些知识点之上的。一旦掌握好,就可以长久使用,并且保持快速学习的能力。
java思维导图
2019/05/14
4720
程序员那些必须掌握的排序算法(上)
现在的IT行业并不像以前那么好混了,从业人员过多,导致初级程序员过剩,这也间接导致了公司的招聘门槛越来越高,要求程序员掌握的知识也越来越多。 算法也是一个争论了很久的话题,程序员到底该不该掌握算法?不同的人有不同的答案,而事实上,很多公司都对算法有一定的要求,有些公司直接在面试的时候便会要求面试者手写算法题。这就对程序员的技术要求产生了很大的考验,所以面对如今的大环境,我们必须掌握算法,才能在今后的工作中占据一席之地。 那么接下来,我就简单介绍一下几个排序算法,希望对你们有所帮助。
wangweijun
2020/02/14
4520
程序员那些必须掌握的排序算法(下)
快速排序(Quicksort)是对冒泡排序的一种改进。 快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 演示:
wangweijun
2020/02/14
4100
程序员必须掌握的8大排序算法
分类: 1)插入排序(直接插入排序、希尔排序) 2)交换排序(冒泡排序、快速排序) 3)选择排序(直接选择排序、堆排序) 4)归并排序 5)分配排序(基数排序) sort.jpg 一、直接插入排序 (
海天一树
2018/04/17
9530
程序员必须掌握的8大排序算法
云原生时代,程序员应该掌握哪些能力?
云原生可以说是目前最火热的一个技术概念,它改变了我们对开发、部署和操作应用程序的思考方式。
Guide哥
2023/01/11
1.1K0
Java常用排序算法/程序员必须掌握的8大排序算法
1)插入排序(直接插入排序、希尔排序) 2)交换排序(冒泡排序、快速排序) 3)选择排序(直接选择排序、堆排序) 4)归并排序 5)分配排序(基数排序)
哲洛不闹
2018/09/19
5940
Java常用排序算法/程序员必须掌握的8大排序算法
程序员算法面试中,必须掌握的数组理论知识
数组是非常基础的数据结构,在面试中,考察数组的题目一般在思维上都不难,主要是考察对代码的掌控能力
代码随想录
2020/06/12
3820
程序员必须要掌握的十大经典算法
快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。
程序员互动联盟
2018/03/15
6.9K0
程序员必须要掌握的十大经典算法
对话 Max Tegmark:掌控权必须掌握在人类手中
8月26日,集智俱乐部与腾讯研究院共同举办“AIS²系列学术报告和研讨活动”沙龙,共同提出AIS²倡议,意指AI+Society与AI+Science这两大如火如荼的前沿领域,并预言人工智能即将在跨学科研究中形成的集体涌现。
小腾资讯君
2023/09/05
2510
前端面试哪些是必须要掌握的
Cookie是最早被提出来的本地存储方式,在此之前,服务端是无法判断网络中的两个请求是否是同一用户发起的,为解决这个问题,Cookie就出现了。Cookie的大小只有4kb,它是一种纯文本文件,每次发起HTTP请求都会携带Cookie。
loveX001
2022/09/23
7620
JVM垃圾回收之垃圾收集算法,程序员必须掌握的知识
解释下,堆大小=新生代+老年代,新生代与老年代的比例为1:2,新生代细分为一块较大的Eden空间和两块较小的Survivor空间,分别被命名为from和to。
黎明大大
2020/09/08
4290
JVM垃圾回收之垃圾收集算法,程序员必须掌握的知识
作为一个程序员一定要掌握的算法之遗传算法
        一个程序员一生中可能会邂逅各种各样的算法,但总有那么几种,是作为一个程序员一定会遇见且大概率需要掌握的算法。今天就来聊聊这些十分重要的“必抓!”算法吧~,就比如说遗传算法啊
会洗碗的CV工程师
2023/10/14
6250
作为一个程序员一定要掌握的算法之遗传算法
学点程序员必须掌握的Linux知识
本文关于学习Linux的目的并不是让读者如运维人员那样去精通Linux,而是掌握一些java开发工程师所具备的Linux操作技能。因为很多java程序员在公司负责一个项目的过程中总是避免不了将项目打包后部署到Linux服务器,这时如果你不懂一点与项目部署相关的Linux命令,那你大概只会被你的老板当成一名初级程序员。
用户3587585
2022/09/21
6660
学点程序员必须掌握的Linux知识

相似问题

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

383.7K

机器学习有哪些算法?

1431

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

22846

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

251.7K

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

16851
交个朋友
加入腾讯云技术交流站
洞悉AI新动向 Get大咖技术交流群
相关问答用户
新浪微博 | 高级总监擅长4个领域
到家集团 | 技术VP擅长5个领域
《用ChatGPT做软件测试》 | 作者擅长5个领域
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档