|
所在平台: Udemy |
课程主页: https://www.udemy.com/course/algorithms-and-data-structures-in-java-part-ii/
课程评论:没有评论
课程名称:Java中的算法与数据结构 #2(附面试问题) 概述:此课程旨在介绍数据结构和算法的相关知识,采用Java语言进行实现,但尽量保持通用性,以便于在C++或Python中应用。课程预计需要12小时完成,建议学员多次手动编写这些数据结构,以加深理解。 课程大纲: 第一部分 - 前缀树(Tries) - 介绍前缀树的基本概念 - 基本操作:插入、排序和自动补全 - 最长公共前缀问题 - 前缀树在网络(IP路由)中的应用 第二部分 - 三元搜索树(Ternary Search Trees) - 前缀树的问题分析 - 三元搜索树的定义与基本操作:插入与检索 - 三元搜索树的应用(如IP路由和Boggle游戏) 第三部分 - 子串搜索算法 - 介绍多种子串搜索算法 - 暴力搜索法 - Z算法 - Rabin-Karp算法与哈希技术 - Knuth-Morris-Pratt(KMP)子串搜索算法 第四部分 - 字符串 - Java编程中的字符串处理 - 字符串常量池的概念 - 前缀与后缀 - 最长公共前缀问题 - 最长重复子串问题 - 后缀树与后缀数组 第五部分 - 排序算法 - 基本排序算法介绍 - 冒泡排序与选择排序 - 插入排序与希尔排序 - 快速排序与归并排序 - 基于比较和非比较的方法 - 字符串排序算法 - 桶排序与基数排序 第六部分 - 数据压缩算法 - 数据压缩的概念 - 运行长度编码 - 哈夫曼编码 - LZW压缩与解压 第七部分 - 算法分析 - 如何测量算法的运行时间 - 使用大O(ordO)、大Ω(omega)和大θ(theta)符号进行运行时间分析 - 复杂性类的介绍 - 多项式(P)与非确定性多项式(NP)算法 - O(1)、O(logN)、O(N)等多种运行时间复杂度的分析 在课程开始时,我们将讨论前缀树。现代搜索引擎(例如Google)的自动补全功能就是基于前缀树的数据结构。同时,我们将深入探讨子串搜索领域,包括Z算法以及暴力方法和Rabin-Karp算法。下一个章节将讨论如何对整数、浮点数、字符串或自定义对象进行排序,包括冒泡排序、插入排序、归并排序和快速排序等。课程最后部分将介绍数据压缩技术,如运行长度编码、哈夫曼编码及LZW压缩等。 感谢您加入本课程,快来开始学习吧!
This course is about data structures and algorithms. We are going to implement the problems in Java, but I try to do it as generic as possible: so the core of the algorithms can be used in C++ or Python. The course takes approximately 12 hours to complete. I highly recommend typing out these data structures several times on your own in order to get a good grasp of it.Section 1 - Trieswhat are prefix trees (tries)basics operations: insertion, sorting and autocompletelongest common prefix problemprefix trees applications in networking (IP routing)Section 2 - Ternary Search Treeswhat is the problem with tries?what are ternary search treesbasic operations: insertion and retrievalapplications of tries (IP routing and Boggle Game)Section 3 - Substring Search Algorithmssubstring search algorithmsbrute-force substring searchZ substring search algorithmRabin-Karp algorithm and hashingKnuth-Morris-Pratt (KMP) substring search algorithmSection 4 - Stringsstrings in Java programmingwhat is the String Constant Pool?prefixes and suffixeslongest common prefix problemlongest repeated substring problemsuffix tries and suffix arraysSection 5 - Sorting Algorithmsbasic sorting algorithmsbubble sort and selection sortinsertion sort and shell sortquicksort and merge sortcomparison based and non-comparison based approachesstring sorting algorithmsbucket sort and radix sortSection 6 - Data Compression Algorithmswhat is data compressionrun length encodingHuffman-encodingLZW compression and decompressionSection 7 - Algorithms Analysishow to measure the running time of algorithmsrunning time analysis with big O (ordo), big Ω (omega) and big θ (theta) notationscomplexity classespolynomial (P) and non-deterministic polynomial (NP) algorithmsO(1), O(logN), O(N) and several other running time complexitiesFirst, we are going to discuss prefix trees: modern search engines for example use these data structures quite often. When you make a google search there is an autocomplete feature because of the underlying trie data structure. It is also good for sorting: hashtables do not support sort operation but on the other hand, tries do support. Substring search is another important field of computer science. You will learn about Z algorithm and we will discuss brute-force approach as well as Rabin-Karp method.The next chapter is about sorting. How to sort an array of integers, doubles, strings or custom objects? We can do it with bubble sort, insertion sort, mergesort or quicksort. You will learn a lot about the theory as well as the concrete implementation of these important algorithms. The last lectures are about data compression: run-length encoding, Huffman encoding and LZW compression.Thanks for joining the course, let's get started!