1. Python Data Structure
Data structure is mainly to read the reading records written when reading [Problem Solving with Python] (http://interactivepython.org/courselib/static/pythonds/index.html), of course, also combined with part of the [Introduction to algorithms] (http://en.wikipedia.org/wiki/Introduction_to_Algorithms) content, in addition, there are a lot of content on wikipedia, so there is a lot of content, it may be a bit messy. This section mainly introduces how to use Python to implement common data structures, such as stacks, queues, binary trees, and so on. It also provides Python's built-in data structure performance analysis, it also includes a brief summary of search and sorting (which will be described in more detail in the algorithm design article. Every article has implementation code with a lot of content. Simple algorithms generally give a general introduction to ideas and algorithm flows. complex algorithms provide various diagrams and code implementation details. This part is the first part of the algorithm design Article below. If the data structure is good, you can directly read the algorithm design article. If you have any problems, you can come back and check a specific content in the Data Structure Article to charge it.
(1) [Search] (http://hujiaweibujidao.github.io/blog/2014/05/07/python-algorithms-search/) a brief description of sequential search and binary search, detailed Hash search (hash function design and how to avoid conflict)
(2) [sort] (http://hujiaweibujidao.github.io/blog/2014/05/07/python-algorithms-sort/) the thought of various sort Algorithms and Its Illustration and implementation
(3) [data structure] (http://hujiaweibujidao.github.io/blog/2014/05/08/python-algorithms-datastructures/) The Performance Analysis and Implementation of Python built-in data structure commonly used data structure: Stack, queue and binary heap
(4) [tree Summary] (http://hujiaweibujidao.github.io/blog/2014/05/08/python-algorithms-Trees/) describes Binary Tree, describes the concept and implementation of Binary Search Tree and AVL Tree
2. Python Algorithm Design
Algorithm design is mainly to read [Python Algorithms: Mastering Basic Algorithms in the Python Language] (http://link.springer.com/book/10.1007%2F978-1-4302-3238-4) [** click the link to enter the Springer download original book electronic version **] After writing the book summary, the original book most of the content combined with the classic book [algorithm Introduction] (http://en.wikipedia.org/wiki/Introduction_to_Algorithms), the content is more detailed and in-depth, it mainly introduces various common algorithm design ideas and how to use Python to efficiently and skillfully implement these algorithms. This is different from the previous data structure article, some algorithms, such as sorting, do not detail their implementation details, but focus on their internal algorithm ideas. This part uses some third-party modules related to the data structure. Because this article focuses on the idea and implementation of algorithms, it does not re-implement each data structure, however, when introducing algorithms, we will analyze the advantages and disadvantages of Python's built-in data structure and third-party data structure modules, which means this article is much more difficult than above, but I think my introduction should be simple and clear. Hey hey, there are a lot of things about python development in it, so you can't miss it!
Every article here has implementation code, but I usually don't analyze the code. It is more about analyzing algorithm ideas, so there are more content, even so, it does not include all the content in the corresponding chapter of the original book. Because the content is too rich, I just choose a classic algorithm instance to introduce the core idea of the algorithm. In addition, there is still a lot of content that is not available in the original book, partly from the introduction to algorithms, and partly from my own insights. This article is a small dish for the great gods. Please smile, it may be a bit difficult for cainiao, so the most suitable one is similar to mine, I have some knowledge of various algorithms, but I still don't have a deep understanding of the half-bucket program. Hey hey.
The order of this article is arranged according to the chapter in the original book [Python Algorithms: Mastering Basic Algorithms in the Python Language] (http://link.springer.com/book/10.1007%2F978-1-4302-3238-4) (the Chapter title part is different from the same part ), in order to save time and maintain the original flavor of the original work, some content (which is generally difficult to translate and understand) is directly taken from the original English content.
** 1. you may think that you know a lot about the content, but it is not necessary to read it. In fact, if it is me, I will also think so. But if it is just to sum up the steps of an algorithm, this summary is meaningless. I think the highlight of this summary is to find a way to clarify how an algorithm is created, what needs attention, and how to optimize it. **
** 2. you may also say that the introduction to algorithms is not both authoritative and comprehensive. Basically, every algorithm has a detailed proof. Isn't it better to read the introduction to algorithms? Of course, if you want to read the introduction to algorithms, I will not block you. After reading them, I feel like you are not good at all. Don't blame your younger brother for not reminding you, the right theorem of the left one is really not suitable for algorithm science. Few people can stick to it. **
** 3. If you carefully read this series, I promise you will have a lot of GAINS. I will give you a prompt when you need to look at the part of the introduction to algorithms. Tip: the wonderful content starts from section 4th ~ **
(1) [Python Algorithms-C1 Introduction] (http://hujiaweibujidao.github.io/blog/2014/07/01/python-algorithms-introduction)
This section briefly introduces the content in the original book, describes the importance of algorithms and the summary of each chapter.
(2) [Python Algorithms-C2 The basics] (http://hujiaweibujidao.github.io/blog/2014/07/01/python-algorithms-the-basics)
This section describes three methods: Representation of the algorithm's approximate running time, six algorithm performance evaluations, and how to implement the tree and graph in Python.
(3) [Python Algorithms-C3 Counting 101] (http://hujiaweibujidao.github.io//blog/2014/07/01/python-algorithms-counting-101)
The original book mainly introduces some basic mathematics, such as arrangement and combination and recursive loops. However, this section only focuses on three methods for calculating the algorithm running time.
(4) [Python Algorithms-C4 Induction and Recursion and ction] (http://hujiaweibujidao.github.io/blog/2014/07/01/python-algorithms-induction)
This section describes three core knowledge of Algorithm Design: Induction, Recursion, and Reduction.
(5) [Python Algorithms-C5 Traversal] (http://hujiaweibujidao.github.io/blog/2014/07/01/python-algorithms-traversal)
This section describes the graph Traversal Algorithms BFS and DFS, as well as the Topology Sorting method and the (strong) graph-searching algorithm.
(6) [Python Algorithms-C6 Divide and Combine and Conquer] (http://hujiaweibujidao.github.io/blog/2014/07/01/python-algorithms-divide-and-combine-and-conquer)
This section mainly introduces the divide and conquer policy, and mentions the balance of the tree problem and the Sorting Algorithm Based on the divide and conquer policy.
(7) [Python Algorithms-C7 Greedy] (http://hujiaweibujidao.github.io/blog/2014/07/01/python-algorithms-greedy)
This section describes the greedy strategy through several examples, including the knapsack problem, the Harman encoding and the minimal spanning tree.
(8) [Python Algorithms-C8 Dynamic Programming] (http://hujiaweibujidao.github.io/blog/2014/07/01/python-algorithms-dynamic-programming)
This section describes the implementation methods of the Memorandum and iteration methods of dynamic planning based on some typical dynamic planning problems, and compares the two methods.
(9) [Python Algorithms-C9 Graphs] (http://hujiaweibujidao.github.io/blog/2014/07/01/python-algorithms-graphs)
This section describes various Shortest Path Algorithms in graph algorithms, and reveals their kernels and similarities and differences from different perspectives.