【算法基础三】算法如何入门?零基础入门算法应该学些什么?

11 篇文章 19 订阅
订阅专栏

✅作者简介:大家好,我是新小白2022,让我们一起学习,共同进步吧!🏆
📃个人主页:新小白2022的CSDN博客
🔥系列专栏:算法基础入门
💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博主哦🤞

 系列文章目录

   🍋🍍算法学习打卡🍍🍋

第一章  字符编码分类(算法基础一)

第二章   双飞本科学习动力,方向(算法基础二)

第三章   零基础入门算法应该学些什么(算法基础三)

第四章  小项目实战(通讯录管理系统) 

第五章 项目实战自我总结

第六章  快捷键操作(单行/多行注释) 

第七章  随机种子与随机数(冷知识)

第八章   谁的大学不迷茫?计算机相关专业该怎样度过?

 第九章   致新手——计算机考研都需要准备什么?

  第十章  作为程序员,是什么让你坚持不懈地学习?


目录

 系列文章目录

🌞前言

🌞一、什么是数据结构与算法

🌞二、学习的重点在什么地方?

🌞三、切勿盲目刷题:刷题前的知识积累

 🍋1、提高数据结构与算法没啥捷径,最好的捷径就是多刷题。

 🍋2、AC不是目的,我们要追求完美

 🍋3、挑战自己,跳出舒适区

 🍋4、再说数据结构重要性

🌞三、从0基础小白,到ACM亚洲区域赛金牌

 🍋1、知识轮廓

 🍋2、学一门基础的程序设计语言

 🍋3、选择一本适合自己的参考书

 🍋4、刷题实践

 🍋5、如何正确做一道题

从简入手

优化

构思代码

写代码

Debug

总结与反思

🌞总结


🌞前言

这篇文章不是让你成为大神的,学完也不是多厉害,而是,给处于大学迷茫、不知道学啥的你,一个学习的方向,无论你是否是科班。不过我相信,当你看完这些,你应该会有自己的学习方向。


🌞一、什么是数据结构与算法


1、程序 = 数据结构 + 算法,足以看出他们的重要性,但感觉平时编程没有刻意用到他们,其实这只是感觉,代码的字里行间无不在使用。

一个常见的心理路程就是:

开始学习时,感觉他们没什么用,平时敲代码也用不到,没有在代码里刻意设计过
学习一段时间,发现以前写代码都在悄悄的用到,然后开始刻意按照规则设计代码
时间久了,又感觉没有用到了,其实是在下意识的用了,只是用的时候没有刻意贴上“数据结构与算法”的标签

2. 算法
操作数据的一组方法。

算法的设计取决于逻辑结构,算法的实现依赖于存储结构。

3. 数据结构与算法
数据结构是为算法服务的,算法要作用在特定的数据结构之上。无法孤立数据结构来讲算法,也无法孤立算法来讲数据结构。数据结构是静态的,它只是组织数据的一种方式。如果不在它的基础上操作、构建算法,孤立存在的数据结构就是没用的。

🌞二、学习的重点在什么地方?

提到数据结构和算法,很多人就很头疼,因为这里面的内容实在是太多了。这里,我就帮你梳理一下,应该先学什么,后学什么。你可以对照看看,你属于哪个阶段,然后有针对地进行学习。

想要学习数据结构与算法,首先要掌握一个数据结构与算法中最重要的概念——复杂度分析

这个概念究竟有多重要呢?可以这么说它几乎占了数据结构和算法这门课的半壁江山,是数据结构和算法学习的精髓!必须要拿下,并且要搞得非常熟练。否则后面的数据结构和算法也很难学好。

为了让你对数据结构和算法能有个全面的认识,从 优秀博客这里找了一张图,里面几乎涵盖了所有数据结构和算法书籍中都会讲到的知识点!

作为初学者,或者一个非算法工程师来说,你并不需要掌握图里面的所有知识点。

很多高级的数据结构与算法,比如二分图、最大流等,这些在我们平常的开发中很少会用到。所以,你暂时可以不用看。我还是那句话,咱们学习要学会找重点。如果不分重点地学习,眉毛胡子一把抓,学起来肯定会比较吃力

总结了20个最常用的、最基础数据结构与算法,不管是应付面试还是工作需要,只要集中精力逐一攻克这20个知识点就足够了。

这里面有10个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie树;

10个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。

掌握了这些基础的数据结构和算法,再学更加复杂的数据结构和算法,就会非常容易、非常快。

学习数据结构和算法的过程,是非常好的思维训练的过程,所以,千万不要被动地记忆,要多辩证地思考多问为什么。如果你一直这么坚持做,你会发现,等你学完之后,写代码的时候就会不由自主地考虑到很多性能方面的事情,时间复杂度、空间复杂度非常高的垃圾代码出现的次数就会越来越少。你的编程内功就真正得到了修炼。

🌞三、切勿盲目刷题:刷题前的知识积累

 🍋1、提高数据结构与算法没啥捷径,最好的捷径就是多刷题。

但是,刷题的前提是你要先学会一些基本的数据结构与算法思想。 (优秀博客分享连续三年刷题)

千万别指望以为自己把基础思想学完之后刷题会很牛,只有多刷题,只有多动手实践,你的灵敏度才会提高起来。

 🍋2、AC不是目的,我们要追求完美

在做题的时候,一定要追求完美,千万不要把一道题做出来之后,提交通过,然后就赶紧下一道。我认为这意义不大,因为一道题的解法太多了,有些解法态粗糙了,我们应该要寻找最优的方法。

在做题的时候,要力求一题多解,如果自己实在想不出来其他办法了,可以去看看别人是怎么做的,千万不要觉得模仿别人的做法是件丢人的事。衡量一道算法题的好坏无非就是时间复杂度空间复杂度,所以我们要力求完美,就要把这两个降到最低,令他们相辅相成。

我想不到这些方法啊,怎么办?那么你就可以去看别人的做法,之后,遇到类似的题,你就会更有思路,更知道往哪个方向想。

 🍋3、挑战自己,跳出舒适区

什么叫舒适区?在刷题的时候,可能有一类题是你比较懂的,你每次一看就有思路,然后半个小时就撸好代码,提交代码,然后通过了,然后,哇,又多刷了一道题,心里很舒服。

但是,记住,前期你可以多刷这种题练手,提升自己的乐趣,但,我还是建议你慢慢跳出舒适区,去做一些自己不擅长的题,并且找段时间一直刷这种题。例如我觉得我在递归方面的题还是挺强的

但是,我对动态规划的题,很菜,每次都要想好久,每次遇到这种题都有点害怕,没什么信心。不过有段时间我觉得只刷动态规划的题,直接在 leetcode 选定专题,连续做了七八十道,刚开始很难受,后来就慢慢知道了套路了,一道题从两三个小时最后缩到半小时,简单的十几分钟就搞定。感觉自己对这类型的题也不惧怕的。

所以,建议你,一定要学好跳出自己的舒适区

 🍋4、再说数据结构重要性

前面我主要是说了我平时都是怎么学习算法的。在数据结构方法,我只是列举了你们一定要学习链表树(二叉堆),但这是最基本的,刷题之前要掌握的,对于数据结构列举一些比较重要的:

1、链表(如单向链表、双向链表)。

2、树(如二叉树、平衡树、红黑树)。

3、图(如最短路径的几种算法)。

4、队列、栈、矩阵。

对于这些,自己一定要动手实现一遍。你可以看书,也可以看视频,新手可以先看视频,不过前期可以看视频,之后我建议是一定要看书。

例如对于平衡树,可能你跟着书本的代码实现之后,过阵子你就忘记,不过这不要紧,虽然你忘记了,但是如果你之前用代码实现过,理解过,那么当你再次看到的时候,会很快就记起来,很快就知道思路,而且你的抽象能力等等会在不知不觉中提升起来。之后再学习红黑树啊,什么数据结构啊,都会学的很快。

🌞三、从0基础小白,到ACM亚洲区域赛金牌

优秀博主分享

 🍋1、知识轮廓

首先我们要在大脑中初步建立算法与数据结构知识的结构,有助于我们后面学习到某一块知识,可以知道我们当前的学习的知识属于哪个模块,进而在脑中对知识点进行分类和总结,对后续的刷题和学习都十分帮助。

 🍋2、学一门基础的程序设计语言

这里推荐学习 C++/Java/Go/Python。这几个是目前比较主流的语言,如果你已经会其中的一种,学习算法与数据结构就够了。

会的意思是指: 会题目要求的基础的输出和输出,了解语言基础的语法,可以根据题目要求,能用语言实现自己的思路。

注意一点,如果目标是在学习算法和数据结构,不要对语言的细节进行过分的深入,耽误过多时间。只要会基本的语法可以实现算法的思路就可以了。

 🍋3、选择一本适合自己的参考书

初学者从简入手,选择一本薄、相对容易、看得进去的书,建立学习算法的信心

这里推荐几本得到很多好评的两本书。

《算法红宝书第四版》

对每一个算法知识点讲得都很详细,同时不是很繁琐,比较容易上手。

《图解算法》

图例很多,语言通俗易懂,学起来比较有意思。

《算法导论》

大家小学的时候肯定都有字典或工具书。

我们就可以把《算法导论》当做工具书来使用,在学完了基本的算法与数据结构,大家想对某一个知识深入学习或者复习的时候,这个时候可以查一查《算法导论》。

 🍋4、刷题实践

纸上得来终觉浅,绝知此事要躬行!

对于算法和数据结构,最好的检验学习成果的方式,就是刷题!

所以推荐大家学习一个知识点后,去刷一点对应知识点的题目巩固和加深一下理解

 🍋5、如何正确做一道题

从简入手

有的时候一下想到时间复杂度最低的解法是很难的,就像一口吃不成胖子。

所以我们可以先从简单暴力(时间复杂度高)的方法入手,可以发现一些题目的线索,为后面想到时间复杂度最低的方法打下基础。

优化

思考如何在第一步的基础上,如何优化算法,这里可以学习常见优化的算法与数据结构来降低时间复杂度。比如: 哈希表、二分算法、动态规划等

构思代码

有了以上两步,我们此时应该已经有了一个正确的想法,此时我们应该构思代码,有那几部分,每部分实现什么功能,代码怎么写。而不是直接闷头去写代码,因为很多时候没想清楚,直接去写代码,会导致写了一半发现思路不对,之前写的代码前功尽弃。

写代码

实现第三步代码,写代码的时候要专注,写完要自己先检查一遍有没有手误,防止自己想的和写的不一致,最后写一个简单的样例,测试一下代码是否可以通过。测试通过了就可以提交啦。

Debug

如果代码通过了,可以直接看下一步。

如果我们的题目没有通过,应该检查代码是不是有bug、思路对不对。

有的时候肉眼看不出的时候,可以出几组复杂的测试样例,看看自己的代码是否可以输出正确的结果,若不能的话,可以根据样例看代码哪里有问题。

总结与反思

题目通过了,我们应该总结一下这道题考察的知识点、切入的角度、同类型的题目等,还要思考有没有更优的办法,代码还能不能更加简洁一些。

做到以上几点,一道题的就学习的很透彻了,遇到同类型的题目也可以举一反三。


🌞总结

知识需要沉淀,不要想试图一下子掌握所有。在学习的过程中,一定会碰到“拦路虎”。如果哪个知识点没有怎么学懂,不要着急,这是正常的。因为,想听一遍、看一遍就把所有知识掌握,这肯定是不可能的。永远记住学习知识的过程是反复迭代、不断沉淀的过程

这句话是不是不太完整?学习知识的过程是反复迭代、不断沉淀、乐于分享的过程!

多谢前辈优秀文章!!!

1、时间复杂度(优秀博客)

2、如何正确学习数据结构、算法这门课?(应试)​​​​​​ ​​​​​

3、连续三年刷题(经验)

4、 从小白到ACM金牌大神 

算法入门
九野的博客
01-09 3万+
每个专题结束后会有5小时的专题赛~ 1、hustOJ目前支持谷歌、火狐浏览器等部分浏览器。 2、欢迎吐槽~ 3、推荐该阶段用书(以下具体算法实现多数可在此书中找到详解):算法竞赛入门经典之训练指南(刘汝佳) 4、题解报告:专题中的题目多是经典题目,百度搜索即有详细解答~ 5、专题相关知识点红字标出,建议先百度红字部分,有助于专题学习~ 6、专题时间会在"ACM 今天你AC了吗?"(12
学习算法,你需要掌握这些编程基础(包含JAVA和C++
infinitor的博客
04-10 2685
前言 小伙伴们好呀!可爱的小编又来了。最近放寒假了,相信各位小伙伴已经做好满满的计划打算在寒假实现弯道超车。 这么美好的一段长假,不用来学习是在是太暴殄天物啦! 加上经常有小伙伴来问小编,学习算法需要掌握哪些编程语言?代码怎么学啊好难啊?是学Python好还是matlab好? 这些问题实在没有办法一一回答,所以今天我们就来聊一聊,学习算法需要掌握什么样的编程知识吧~ 值得注意的是,本文面向的对...
零基础入门深度学习(3) - 神经网络和反向传播算法1
08-03
文章列表零基础入门深度学习(1) - 感知器零基础入门深度学习(2) - 线性单元和梯度下降零基础入门深度学习(3) - 神经网络和反向传播算法零基础入门深度学
适合初学者的《零基础算法
10-17
零基础算法》,最适合初学算法的朋友作参考
入门必看-算法基础知识讲解】小白都也能看得懂_算法学习
最新发布
2401_84140130的博客
04-27 1055
大家好,我是小诚,国庆放假后跟一些小伙伴聊天时发现,大家潜意识里都知道想要进入大厂算法是必须过关的,所以很多人在学校就开始去刷题了,题目虽然刷了许多,但是对于学习算法的初衷和衡量一个算法的指标却是模糊的,所以,博主想写一篇关于学习算法的初衷和算法的指标,帮助准备学习算法或者初学算法的小伙伴将基础巩固。本篇文章重点介绍:算法相关知识的介绍,和衡量算法的指标(时间复杂度和空间复杂度)如果文章对你有帮助,可以帮忙一键连和专栏订阅哦!二、专栏推荐。
数据结构&算法零基础入门笔记
01-26
算法
零基础入门深度学习(3) - 神经网络和反向传播算法
02-27
零基础入门深度学习 神经网络 反向传播算法 神经网络和反向传播算法
零基础算法--自己花钱买的资料
01-19
自己花钱买的啊,很不错的算法入门于提高的书,希望能帮到大家。
零基础C语言编程与算法竞赛入门经典完整版
04-18
零基础C语言编程与算法竞赛入门经典完整版
十余年谷歌大佬的见解:成为算法工程师到底需要学些什么?
AI--小智
05-07 1万+
人工智能? 感觉这个词很广泛,我之前想把人工智能当成某一项技术来学,但是并没有找到我满意的答案,还是说人工智能本就不是某一项技术? 首先回答一下人工智能到底学什么 1、学习并掌握一些数学知识 高等数学是基础中的基础,一切理工科都需要这个打底,数据挖掘、人工智能、模式识别此类跟数据打交道的又尤其需要多元微积分运算基础 线性代数很重要,一般来说线性模型是你最先要考虑的模型,加上很可能要处理多维数据,...
我的算法学习之路
洛阳纸迷
05-13 4347
关于 严格来说,本文题目应该是我的数据结构算法学习之路,但这个写法实在太绕口——况且CS中的算法往往暗指数据结构算法(例如算法导论指的实际上是数据结构算法导论),所以我认为本文题目是合理的。 这篇文章讲了什么? ●我这些年学习数据结构算法的总结。 ●一些不错的算法书籍和教程。 ●算法的重要性。
算法学习基础(一)
极客开发者的博客
06-07 8020
作为一名普通的二本学校,我在很早之前就有一个目标,那就是大学之后好好找一个软件开发工作。因此学习了很多的编程基础,不过近几天面试发现,技术官总是喜欢问你算法知识。编程语言不断变化,但是很底层的知识与算法密切相关,算法也就是体现程序员内功所在。因此,从此我要好好学算法。 本笔记参考马士兵老师的视频教程:https://www.bilibili.com/video/av46562560 一、基本概...
学习算法你必须知道的一些基础知识(文末福利)
weixin_34245169的博客
03-16 416
点击标题下「异步社区」可快速关注机器学习是解决很多文本任务的基本工具,本文自然会花不少篇幅来介绍机器学习。要想搞明白什么是机器学习,一定要知道一些概率论和信息论的基本知识,本文就简单回顾一下这些知识。1.1 概率论概率就是描述一个事件发生的可能性。我们生活中绝大多数事件都是不确定的,每一件事情的发生都有一定的概率(确定的事件就是其概率为100%而已)。天气预报说明天有雨,那么它也只是说明天下雨的概...
算法入门到精通
热门推荐
Umbrella Corporation
10-14 1万+
一、前言 二、算法分析 数学模型 注意事项 ThreeSum 倍率实验 、排序 选择排序 冒泡排序 插入排序 希尔排序 归并排序 快速排序 堆排序 小结 四、并查集 Quick Find Quick Union 加权 Quick Union 路径压缩的加权 Quick Union 比较 五、栈和队列 栈 队列 六、符号表 初级实现 二叉查找树 2-3 查找树 红黑树...
什么是算法?——算法轻松入门
05-21 167
什么是算法算法是利用计算机解决问题的处理步骤,简而言之,算法就是解决问题的步骤。 算法不仅仅用于计算机的数据处理,现实世界中的各种问题也需要结合算法的概念来解决,其中,具有代表性的就是烹饪中用到的食谱,食谱是各种美味料理的制作方法,需要用一定的步骤表示出来。 算法是古老智慧的结晶,是程序的范本,学习算法才能编写出高质量的程序。 算法的改进/食谱的改进: 为什么要学习...
python算法入门
03-22
Python算法入门是学习和理解算法基础知识,以下是Python算法入门的几个重要方面: 1. 数据结构:了解不同的数据结构,如数组、链表、栈、队列、树、图等,以及它们的特点和应用场景。 2. 基本算法:掌握常见的基本算法,如排序算法(冒泡排序、插入排序、选择排序、快速排序等)、查找算法(线性查找、二分查找等)、递归算法等。 3. 算法复杂度:了解算法的时间复杂度和空间复杂度,以评估算法的效率和性能。 4. 动态规划:学习动态规划算法,用于解决一些具有重叠子问题和最优子结构特点的问题。 5. 贪心算法:了解贪心算法,它在每一步选择中都采取当前状态下最好或最优的选择,从而希望最终得到全局最好或最优的解。 6. 回溯算法:学习回溯算法,它通过不断地尝试所有可能的解,当发现当前尝试的解不符合要求时,回溯到上一步继续尝试其他解。 7. 图算法:掌握图的遍历算法(深度优先搜索和广度优先搜索)以及最短路径算法(Dijkstra算法、Floyd-Warshall算法等)。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 【电脑删不掉文件或文件夹】总结7种方法永久删除! 168535
  • Autodesk genuine service怎么卸载? 72958
  • U盘插入,无法读取?6种解决方法 24368
  • 【算法基础三】算法如何入门?零基础入门算法应该学些什么? 14640
  • 【算法基础五】通讯录管理系统(自我评价) 10324

分类专栏

  • 算法与数据结构 11篇
  • 小知识 12篇
  • C/C++实战 2篇

最新评论

  • U盘插入,无法读取?6种解决方法

    学沧海就好: 第一条就中了,牛🍺

  • U盘插入,无法读取?6种解决方法

    Alisa_68: 但是我在设备管理器里找到了“未知usb设备”属性界面:禁用、启用,没有反应

  • U盘插入,无法读取?6种解决方法

    Alisa_68: 第六个,属性硬件里,我的是空的:没有U盘名和usb大容量存储

  • 开源项目Fast GitHub,知识分享

    2301_81256462: 我也是,现在不知道怎么关闭/删除了

  • Autodesk genuine service怎么卸载?

    2301_78059647: 爱了爱了,真的有用,试了好多就这个成功了!!!!

大家在看

  • 047 php上传1-5关 JS绕过&htaccess&MIME类型&检测头部&逻辑漏洞
  • 三.三Vue 实现的精彩动画效果

最新文章

  • VS Code建立 .h头文件和 .cpp文件
  • 【中秋节】程序员一起过中秋节
  • Autodesk genuine service怎么卸载?
2022年26篇

目录

目录

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司赣州网站改版推荐大鹏网络营销公司南山SEO按天收费中山百姓网标王推广价格布吉阿里店铺运营价格丹竹头网站制作公司甘南网站优化推广推荐海北网络营销多少钱达州seo排名公司岳阳网站优化按天扣费大鹏网站推广系统公司罗湖阿里店铺运营哪家好郑州优秀网站设计价格厦门seo网站推广推荐鹤岗外贸网站设计公司青岛模板制作报价梧州网站优化推广多少钱自贡网站推广方案推荐凉山推广网站推荐大运企业网站制作多少钱呼和浩特seo优化公司临夏网络广告推广公司张家界模板制作哪家好永湖网站优化德宏百度爱采购价格安庆品牌网站设计公司海北网络广告推广多少钱忻州seo网站优化报价中山网站优化推广报价常德网站改版歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化