Algorithms
  • Introduction
  • Algorithms
    • Insertion Sort
    • Shell Sort
    • Selection Sort
    • Heap Sort
    • Merge Sort
    • Quick Sort
    • Dual Pivot QuickSort
    • Radix Exchange Sort
  • Data Structures
    • Basic Datastructures
      • Table or Array
      • List
      • Linked List
      • Stack
      • Queue
      • Deque
      • Dictionary
      • HashTables
    • Trees
      • Tree
      • Binary Search Tree
      • Heap
      • Red-Black Trees
      • Splay Trees
      • Randomized Search Trees
    • Dynamic Programming
      • Fibonacci
      • Knapsack
      • Optimal Binary Search Trees
      • Longest Common Sub sequence
    • External Data Structures
      • B-Trees
      • Variants
    • Multi-dimensional Data Structures
      • Point-Region Quadtree
      • Point-Quadtrees
    • Priority Queues
      • Binomial Queues
  • Graphs
    • Basics
    • Depth First Search
    • Applications of Depth First Search
    • Breadth First Search
    • Shortest Paths
    • Transitive Closure
    • Flow Networks
    • Matching
  • Strings
    • Data Structures for Strings
      • Tries
        • Binary Tries
        • Multiway Trie
        • Patricia Tries
      • Variable Length-code
        • Elias Code
        • Gamma Code
        • Fibonacci Code
      • Huffmancode
      • Ternary Search Tree
    • Searching in Strings
      • Prefix Function
      • Knuth-Morris-Pratt
      • Boyer-Moore
      • Monte-Carlo Algorithms
      • Karp-Rabin
      • Automatons
      • Shift-AND
    • Indexing Text
      • Suffix Trees
      • Suffix Arrays
      • Search Engines & Inverted Files
  • P and NP
    • Introduction
    • SAT and 3-SAT
    • Graph Problems
    • Problems with Collections
    • Networks
    • Data storage
  • Metaheuristics
    • Trajectory Methods
      • Local Search
      • Simulated Annealing
      • Tabu Search
    • Population Based
      • Ant Colony
      • Evolutionary Computation
  • Sources
Powered by GitBook
On this page
  • Status
  • Introduction
  • Programming Interview

Was this helpful?

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.

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

NextAlgorithms

Last updated 6 years ago

Was this helpful?

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