數據結構與算法深入學習
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/
數據結構與算法深入學習