You are on page 1of 3

What algorithms need to know in order to

become a good programmer?


This article contains not only the most common algorithms and data structures, but also more
complex things that you might not know about. We read and learn!

I guess you know at least one programming language and concepts like object and
pointer.Algorithms and data structures will be listed in terms of their complexity.

First, let's start with linear data structures and


algorithms
 Arrays
 Linked list
 Stack
 Queues

Let's move on to the basic algorithms


 Sort - Merge Sort, Insert Sort, Quick Sort, Multiple Mutual Permutations.
 Multiplication of matrices (It is not necessary to implement, the main thing is to know
the algorithm)
 Basic screening algorithms
 Unsigned mathematics, including multiplication and division
 Euclid's algorithm for finding the GCD (greatest common divisor), Modular inversion,
Rapid exponentiation
 Fibonacci numbers with matrix multiplication
 Normal distribution and expectation
 Statistics - mean probabilistic value of a random variable, median, variance, Bayes
theorem

You can also learn popular algorithmic methods:


 Decomposition algorithms - Binary search, Finding a subarray with the largest sum of
elements
 Greedy algorithms - Choice of tasks, Huffman coding
 Dynamic programming - Chain matrix multiplication, Algorithm for solving the
problem of laying the knapsack
 Linear programming - Parameter maximization, Linear sorting time
 Cryptographic algorithms - Manaker algorithm for finding the longest substring-
palindrome, the algorithm for finding the largest common subsequence (LSC), the
Levenshtein distance

Now let us turn to typical nonlinear data


structures
 Trees - Binary tree, General tree, Least common ancestor
 Binary search tree - Symmetric bypass, Bypass by levels, Finding the k-th largest
element, Diameter, Depth, Number of nodes, etc.
 Dynamic memory - Dynamic array, Binary heap, Pyramid sort
 Alignment-Search Algorithm
 Hash table - Linear Probing method, Open addressing, Collision avoidance

Consider graphs
 A list of adjacent vertices of a graph, an adjacency matrix of a graph, Weighted edges
of a graph
 Basic bypass algorithms - Search in width, Search in depth, etc.
 Shortest Path Finding Algorithms - Dijkstra Algorithm, Floyd-Worshell Algorithm,
Bellman-Ford Algorithm
 The minimal spanning tree is the Kruskal Algorithm, the Prima Algorithm

By now you should be very familiar with programming, because you need to know more than the
student for further reading and deepening in this topic.

Complicated trees and graphs


 Balanced trees - AVL-tree, Red-ebony
 Heavy-light decomposition, B-trees, Quadrant tree
 Complicated graph - Minimum cut, Maximum flow
 The maximum coverage - Weddings Theorem
 The Hamiltonian cycle
 Ribbon graph / Linear graph
 Strongly connected components
 Main subgraph, Vertex coverage, Salesman problem - Algorithm of approximation

Advanced cryptographic algorithms:


 The Knuth-Morris-Pratt algorithm
 The Rabin-Karp algorithm
 Prefix and suffix trees
 Automation of suffixes - Ukkonen's algorithm

Higher Mathematics
 Fast Fourier Transform
 Simplicity check
 Computational geometry - The problem of finding the nearest pair, Voronoi diagram,
Convex hull of the set of points

General advanced topics:


 Performing traversal of all combinations / permutations
 Bitwise Processing

You might also like