数据结构与算法深入学习

by javinpaul

由javinpaul

Data structures and algorithms are some of the most essential topics for programmers, both to get a job and to do well on a job. Good knowledge of data structures and algorithms is the foundation of writing good code.

数据结构和算法对于程序员来说是最重要的主题,既要找到一份工作,又要做好一份工作。 精通数据结构和算法是编写良好代码的基础。

If you are familiar with essential data structures e.g. array, string, linked list, tree, map, and advanced data structures like tries, and self-balanced trees like AVL trees, etc., you’ll know when to use which data structure and compute the CPU and memory cost of your code.

如果您熟悉基本的数据结构,例如数组 , 字符串 , 链表 ,树,映射以及高级数据结构(如try)和自平衡树(如AVL树)等,您将知道何时使用哪种数据结构和计算代码的CPU和内存成本。

Even though you don’t need to write your own array, linked list, or hashtable, given every major programming SDK provides them, e.g. JDK or C++ STL library, you will need to understand them so that you can use them in the right place.

即使您不需要编写自己的数组,链接列表或哈希表,但由于每个主要的编程SDK都提供了它们,例如JDK或C ++ STL库,您仍需要了解它们,以便可以在正确的位置使用它们。

Using the right data structure can drastically improve the performance of an algorithm.

使用正确的数据结构可以大大提高算法的性能。

Ideally, we should all learn data structures and algorithms in our schools and colleges, but it’s rarely ever covered. Most of the programmers, including myself, only get introduced to a data structure in our computer science courses, but we didn’t really learn the real-world importance of them, and that’s why we didn’t understand them better.

理想情况下,我们所有人都应该在学校和学院学习数据结构和算法 ,但很少涉及到它。 在我们的计算机科学课程中,包括我在内的大多数程序员都只介绍了一种数据结构,但是我们并没有真正了解它们在现实世界中的重要性,因此我们无法更好地理解它们。

For us, they are just the algorithms and data structures e.g. some concept, not a tool that you can use to write good programs. We didn’t know that Facebook would use them to store our details or that Google would use them to store web pages and link to search queries.

对我们来说,它们只是算法和数据结构,例如某些概念,而不是可用于编写优质程序的工具。 我们不知道Facebook将使用它们来存储我们的详细信息,也不知道Google将使用它们来存储网页并链接到搜索查询。

Anyway, it’s never too late.

无论如何,永远不会太晚。

If you think that your data structure knowledge is not up to par or you want to improve your data structure knowledge, then you have come to the right place.

如果您认为自己的数据结构知识不尽人意,或者想提高自己的数据结构知识,那么您来对地方了。

Earlier, I shared some free books to learn data structures and algorithms, and in this article, you will learn about some of the best data structure and algorithm courses that are available for free online.

之前,我分享了一些免费的书籍来学习数据结构和算法 ,在本文中,您将学习一些可在线免费获得的最佳数据结构和算法课程。

免费课程,学习数据结构和算法 (Free Courses to Learn Data Structures and Algorithms)

Here is my list of some of the best courses to learn data structures and algorithms, which are also free. Many programmers think that free resources are not good, which is not true.

这是我列出的一些学习数据结构和算法的最佳课程的列表,它们也是免费的。 许多程序员认为自由资源不好,这是不对的。

Even though they sometimes don’t match the quality and coverage of paid resources, they are, in fact, the best resources to start with.

尽管有时它们与付费资源的质量和覆盖范围不匹配,但实际上它们是一开始的最佳资源。

You can use these courses to familiarize yourself with the essential data structures and learn some basics.

您可以使用这些课程来熟悉基本的数据结构并学习一些基础知识。

Some of them are particularly good from an interview point of view so you can use them alongside any book you are using to prepare for your programming job interview.

从面试的角度来看,其中一些特别好,因此您可以将它们与准备用于编程工作面试的任何书籍一起使用。

1.易于高级的数据结构 (1. Easy to Advanced Data Structures)

This is one of the free data structure and algorithm courses from Udemy for all those people who want to learn data structures from an absolute basic to advanced level.

这是Udemy针对所有想要从绝对基础到高级学习数据结构的人们提供的免费数据结构和算法课程之一。

This course doesn’t expect you to have any prior knowledge of data structures, but a basic prior knowledge of Java is helpful.

本课程并不期望您具有数据结构的任何先验知识,但是对Java的基本先验知识会有所帮助。

The author @William Fiset is a Software Engineer at Google and a former ACM-ICPC world finalist and has excellent computer programming and problem-solving skills.

@William Fiset是Google的软件工程师,曾是ACM-ICPC的世界决赛入围者 ,具有出色的计算机编程和解决问题的能力。

Talking about social proof, the course has more than 25K students and an average 4.1 ratings from 683 rating which is impressive.

谈到社会证明,该课程有超过25,000名学生,平均683评分中的4.1评分令人印象深刻。

In short, it’s a complete guide to learning everything there is to know about data structures.

简而言之,它是学习有关数据结构的所有知识的完整指南。

This is also an ideal course for computer science students and working software professionals who want to learn data structures and algorithms from an interview perspective.

对于希望从面试角度学习数据结构和算法的计算机科学专业的学生和工作软件专业人员来说,这也是一门理想的课程。

So, if you are looking to get a job with product-based companies like Amazon, Google, Microsoft, or Facebook, you can use this course to kick-start your preparation.

因此,如果您希望在像Amazon , Google , Microsoft或Facebook这样的基于产品的公司找到工作,则可以使用本课程来开始您的准备工作。

2. C语言中的数据结构概念 (2. Data Structure Concepts in C)

This is another free, online algorithm and data structure training course, which aims to teach basic data structures in computer programming.

这是另一种免费的在线算法和数据结构培训课程,旨在教授计算机编程中的基本数据结构。

The data structures taught in the course include Stack, Queue, and Linked List using the C programming language.

本课程中讲授的数据结构包括使用C编程语言的Stack , Queue和Linked List 。

The primary goal of this course is to make students and software engineers visualize how different data structures work.

本课程的主要目的是使学生和软件工程师形象地了解不同的数据结构如何工作。

This is not an exhaustive course, but you will learn about Stack, Queue, and Linked List.

这不是一门详尽的课程,但是您将了解Stack ,Queue和Linked List 。

In short, it is a great course for programmers new to data structures and those who have just learned a programming language and want to learn the basics of how data structures work.

简而言之,对于刚接触数据结构的程序员以及刚刚学习编程语言并想了解数据结构工作原理的人员来说,这是一门很棒的课程。

3.算法第1部分-Coursera (3. Algorithms Part 1 - Coursera)

This is the first part of a two-part series of courses covering algorithms and data structures on Courera by Robert Sedgewick.

这是由Robert Sedgewick撰写的关于Courera的算法和数据结构两部分系列课程的第一部分 。

In this part, you will learn essential data structures like linked lists, stacks, queues, binary trees, and hash tables, and searching and sorting algorithms like binary search, quicksort, mergesort, insertion sort etc.

在这一部分中,您将学习基本数据结构,例如链表 , 堆栈 ,队列, 二进制树和哈希表 ,以及搜索和排序算法,例如二进制搜索 , 快速排序 , 合并 排序 , 插入排序等。

You will also learn about core data structures and algorithms used in everyday applications and understand the trade-offs involved with choosing each data structure along with traversal, retrieval, and update algorithms.

您还将了解日常应用程序中使用的核心数据结构和算法,并了解选择每个数据结构以及遍历 ,检索和更新算法时所要进行的权衡。

All the features of this course are available for free but it does not offer a certificate upon completion.

本课程的所有功能均免费提供,但完成后不提供证书。

4)算法-第2部分 (4) Algorithms - Part 2)

This is the second part of a two-part series of free online Coursera courses covering data structures and algorithms by Robert Sedgewick and Kevin Wayne, both are professors of Computer Science.

这是由两部分都是计算机科学教授的Robert Sedgewick和Kevin Wayne所组成的两部分免费在线Coursera课程的第二部分 ,涵盖了数据结构和算法。

Robert Sedgewick is also the author of Algorithms 4th Edition book, one of the most popular books on Algorithms for Java developers.

Robert Sedgewick还是《 算法第四版 》一书的作者,该书是针对Java开发人员的最流行的算法书籍之一。

In this part, you will learn about the graph- and string-processing algorithms.

在这一部分中 ,您将了解图形和字符串处理算法。

You will also learn some advanced data structures and algorithms used in application development.

您还将学习一些在应用程序开发中使用的高级数据结构和算法。

Talking about the social proof, both Algorithms Part 1 and Algorithms Part 2 are highly recommended courses and have impressive reviews and ratings.

谈到社会证明, 算法第1部分和算法第2部分都是强烈推荐的课程,并且具有令人印象深刻的评论和评分。

5. Java中的数据结构 (5. Data Structure in Java)

This is an introductory online course on data structures, algorithms, and complexity analyses. It will teach you design, implementation, and analyses of basic data structures using the Java language.

这是有关数据结构 ,算法和复杂性分析的在线入门课程 。 它将教您使用Java语言设计,实现和分析基本数据结构。

The best part of this course is the number of practical examples and that it focuses on intuition rather than formulas and mathematical proofs.

本课程最好的部分是大量的实例,它着重于直觉而不是公式和数学证明。

The course provides a good introduction for “complexity analysis,” which makes it possible to spot a poorly (and a great) performing program, even without the need for executing it.

该课程很好地介绍了“复杂性分析”,即使不需要执行它,也可以发现性能不佳(和出色)的程序。

That’s all about some of the free data structure and algorithm courses available online. You can use these courses to learn data structures and algorithms at your own pace.

这就是在线上提供的一些免费数据结构和算法课程的全部内容。 您可以按照自己的进度使用这些课程来学习数据结构和算法。

They may not all be comprehensive, but they do provide a good introduction. Once you go through these courses, you can pick a good book like Introduction to Algorithms to further supplement your knowledge.

它们可能并不全面,但是确实提供了很好的介绍。 学习完这些课程后,您可以选择一本好书,例如《算法简介》 进一步补充您的知识。

进阶学习 (Further Learning)

  • Data Structures and Algorithms: Deep Dive Using Java

    数据结构和算法:使用Java进行深入研究

  • Data Structure and Algorithms — Part 1 and 2

    数据结构和算法-第1部分和第2部分

  • 10 Books to Prepare Technical Programming/Coding Job Interviews

    10本准备技术编程/编码面试的书

  • 10 Algorithm Books Every Programmer Should Read

    每个程序员都应该阅读的10本算法书籍

  • Top 5 Data Structure and Algorithm Books for Java Developers

    面向Java开发人员的前5本书数据结构和算法

  • From 0 to 1: Data Structures & Algorithms in Java

    从0到1:Java中的数据结构和算法

  • Data Structure and Algorithms Analysis - Job Interview

    数据结构和算法分析-求职面试

结束语 (Closing Notes)

Thanks. You made it to the end of the article. Good luck with your programming Journey! It’s certainly not going to be easy, but by following these courses, you are one step closer to mastering data structure and algorithms than others.

谢谢。 您已完成本文的结尾。 祝您编程旅途愉快! 当然这并不容易,但是通过学习这些课程,您将比其他人更接近掌握数据结构和算法。

If you like this article, then please share with your friends and colleagues, and don’t forget to follow javinpaul on Twitter!

如果您喜欢这篇文章,请与您的朋友和同事分享,不要忘记在Twitter上关注javinpaul !

翻译自: https://www.freecodecamp.org/news/these-are-the-best-free-courses-to-learn-data-structures-and-algorithms-in-depth-4d52f0d6b35a/

数据结构与算法深入学习

数据结构与算法深入学习_我最喜欢的免费课程,用于深入学习数据结构和算法...相关推荐

  1. BP算法双向传_链式求导最缠绵(深度学习入门系列之八)

    摘要: 说到BP(Back Propagation)算法,人们通常强调的是反向传播,其实它是一个双向算法:正向传播输入信号,反向传播误差信息.接下来,你将看到的,可能是史上最为通俗易懂的BP图文讲解, ...

  2. ipv6怎么进行邻居学习_事实证明,我的邻居也想学习编码。 他们只是没有意识到这是可能的。

    ipv6怎么进行邻居学习 We all have different motivations for starting a coffee-and-code. Studying by yourself ...

  3. 吴恩达深度学习 | (15) 结构化机器学习项目专项课程第二周学习笔记

    课程视频 第二周PPT汇总 吴恩达深度学习专项课程共分为五个部分,本篇博客将介绍第三部分结构化机器学习项目专项的第二周课程:机器学习(ML)策略(2) . 目录 1. 进行误差分析 2. 清除标注错误 ...

  4. python免费课程全套-为了学习Python,我汇总了这10个免费的视频课程!

    毫无疑问,Python是目前世界上***的编程语言,它***的优势在于它将越多越多的人带入了编程领域. 近年来,学习Python的人比学习其他任何语言的人都多,许多人学Python是为了它背后的数据科 ...

  5. 专业显卡深度学习_如何给非专业人士讲解什么是深度学习?

    转自王咏刚老师<人工智能> 去年开始,工作中需要做许多有关 AI 科普的事情.很长时间里一直在想,该如何给一个没有 CS 背景的人讲解什么是深度学习,以便让一个非技术的投资人.企业管理者. ...

  6. 从新手到高手 c++全方位学习_股票新手怎样快速入门?关于散户学习炒股的几点建议...

    对于完全没有接触过股票也不懂金融基础知识的新手来说,想要在短时间内成为炒股高手是很困难的.在希财君看来,股票投资也是一个需要慢慢积累经验的技术活,除了运气逆天的人,极少有新手可以在入门阶段稳定的盈利. ...

  7. 排序算法python实现_用Python,Java和C / C ++实现的选择排序算法

    排序算法python实现 The Selection Sort Algorithm sorts the elements of an array. In this article, we shall ...

  8. java经典算法思想 贪心_这几道经典例题帮你轻松搞透贪心算法

    贪心算法概念叙述 运用贪心算法求解问题时,会将问题分为若干个子问题,可以将其想象成俄罗斯套娃,利用贪心的原则从内向外依次求出当前子问题的最优解,也就是该算法不会直接从整体考虑问题,而是想要达到局部最优 ...

  9. 上千个国外免费权威优质编程学习课程大放送 —— 提升篇

    随着互联网的发展,像 MIT 和斯坦福等世界名校,都开始在网上公开一些优质的在线免费课程供大家学习.到现在,已经有来自全球共 1000 所左右的学校提供了非常多的优质课程,最有名的平台就是 MOOC. ...

最新文章

  1. 【飘移】仅需7个动作完成“斯堪的纳维亚钟摆”飘移过弯教程
  2. MXNet动手学深度学习笔记:卷积计算
  3. 记事本贪吃蛇游戏代码_厉害了,程序员28行代码写贪吃蛇游戏,附源码!
  4. html5执行shell,利用nginx执行Shell 脚本
  5. java工作笔记018---java中BigDecimal小数位数的四舍五入等操作
  6. 影响Unix多版 FTP曝严重远程执行漏洞
  7. NLTK简单入门和数据清洗
  8. 连锁零售行业ERP解决方案
  9. openstack实例启动失败_Nokia NESC,这是世界上最大的OpenStack私有云之一
  10. python not in range1002无标题_新手常见Python运行时错误
  11. 【转】Python基础-字符串
  12. UE4源码下载与配置sin文件
  13. TASKCTL单机/分布式部署,启动服务/代理节点监听
  14. 【wps表格】重点标识折线图上的某个数据点
  15. module ‘eli5‘ has no attribute ‘show_weights‘
  16. 《认知突围》思维导图精华版
  17. ipad分屏功能怎么用_QQ音乐的听歌识曲功能怎么用?
  18. ffmpeg mp3转pcm指令
  19. CSS一篇文章搞懂系列6:超全的字体篇与背景设置内容,花里胡哨起来
  20. Mentor Expedition如何极坐标旋转添加器件?

热门文章

  1. Leetcode1:Two Sum
  2. python浅蓝色对应的代码_浅蓝色Python模块不在m上工作
  3. 正式踏入24岁了……
  4. 怎么查这个文件在linux下的哪个目录
  5. MySQL数据库的回滚失败(JAVA)
  6. Pythonic---------详细讲解
  7. linux epoll机制对TCP 客户端和服务端的监听C代码通用框架实现
  8. spring3 常见异常解决
  9. Rancher中的服务升级实验
  10. Spring Boot集成Druid监控