Introduction

Status

*This book is currently an ongoing process and chapters might be added / removed in the future*

Currently the following chapters are completed:

  • Data Structures / Trees

  • Data Structures / Dynamic Programming

  • Data Structures / External Data Structures

  • Metaheuristics

Introduction

In this book you will find important and efficient algorithms used in Computer Science today. This list was created based on the courses that I got during my studies at the University Of Ghent (Belgium), containing 4 major aspects:

  • Data Structures

  • Graph Algorithms

  • String Algorithms

  • Metaheuristics

These major aspects cover a wide are of algorithms, going from easy tree algorithms to creating inverted file indexes which are used in search engines today.

Please note that this book is created to give a quick overview of the algorithms and how they work. If you want a more in depth explanation of these algorithms, I encourage you to find more material elsewhere.

In the future, I hope to add other important algorithms such as the Sorting algorithms, Dijkstra, ... however because there are so many topics already, I first hope to be able to finish all of those.

Because this book is this large, errors are possible and can be corrected. For errors to be corrected, feel free to open a pull request or an issue at: https://github.com/thebillkidy/Algorithms

Programming Interview

I used this summary to prepare for my interview with Microsoft in February 2017. I mainly focused on the following concepts:

Datastructures:

  • Linked List

  • Stack

  • Queue

  • Graph

  • Hash Table (separate chaining, linear probing, hash functions)

  • Trees (b-tree, bst, heap, prefix-tree (trie), red-black tree)

Algorithms:

  • DFS

  • BFS

  • Dijkstra

  • Floyd-Warshall

  • Quick sort

  • Insertion Sort

  • Heap Sort

  • Bucket Sort

  • Radix Sort

  • Binary Search

Last updated