Data Structures And Algorithms

Introduction

Data Structures and algorithms are the basis of software engineering.

Description

We can think of data structures as ways to organize data in order to implement abstractions. We can think of algorithms as instructions to give predictable outcomes based on a given input.

List of Data Structures

  • Arrays
  • Dinamic Arrays (Vectors)
  • Queues
  • Stacks
  • Linked Lists
    • Singly Linked Lists
    • Doubly Linked Lists
    • Circular Linked Lists
  • Skip List
  • Graphs
  • Trees
    • Binary Trees
    • Binary Search Trees
    • AVL Trees
    • Red Black Trees
    • B-Tree
    • Splay Tree
    • KD Tree
    • Cartesian Tree
  • Tries
  • Hash Table

List Of Algorithms

  • Sorting Algorithms
    • Bubble Sort
    • Insertion
    • Merge Sort
    • Quicksort
    • Timsort
    • Heapsort
    • Selection Sort
    • Tree Sort
    • Shell Sort
    • Bucket Sort
    • Radix Sort
    • Counting Sort
    • Cubesort

Asymptotic Complexity (Big O Notation)

  • Constant Complexity O(1)
  • Log Complexity O(log(n))
  • Linear Complexity O(n)
  • NLog Complexity O(NLog(N))
  • Quadratic Complexity O( N2 )
  • Cubic Complexity O( N3 )
  • Exponential Complexity O( CN )
  • Factorial Complexity O(N!)