Data structure cheat sheet: Difference between revisions

From Celeste@Hoppinglife
Jump to navigation Jump to search
Line 25: Line 25:
Heapify is a fundamental operation to keep the heap property when there is a new node inserted into the root.
Heapify is a fundamental operation to keep the heap property when there is a new node inserted into the root.


***Complexity***: <math>O(lg n)</math>. You can prove that using recusion master theroem.
'''Complexity''': <math>O(lg n)</math>. You can prove that using recusion master theroem.


<syntaxhighlight lang='cpp'>
<syntaxhighlight lang='cpp'>

Revision as of 16:40, 25 October 2020

A quick cheat sheet on common algorithms and data structures:

Linear Structures

Linked Lists

Basic Implementation

String

Related Algorithms

Arrays

Sorting

Tree-based Structures

Binary Tree

Property

Traversal

Heap

A (binary) heap is a complete binary tree that keeps a sepcific condition of its nodes: For a max-heap, A[parent[i]]>=A[i], for a min-heap, A[parent[i]]<=A[i]. A heap can be used to maintain a priority queue. A heap is often stored as a continous vector.

Heapify

Heapify is a fundamental operation to keep the heap property when there is a new node inserted into the root.

Complexity: O(lgn). You can prove that using recusion master theroem.

void maxheapify(Node* array, int size, int start) {
    auto largest = start;
    if(start * 2 < size && A[largest] < A[start * 2])
        largest = start * 2;
    if(start * 2 + 1 < size && A[largest] < A[start * 2 + 1])
        largest = start * 2 + 1;
    if(largest != start) {
        swap(A[start], A[largest]);
        maxheapify(A, size, largest);
    }
}

n-ary Tree

Union Find

Hashing Table

Graphs

Storage

Traverse

Properties

Algorithms

Dynamic Programming

Recursion

Searching