# Mastering Data Structures and Sorting Algorithms in JavaScript (Lydia Hallie)

Big-O Notation - Introduction to Time Complexity - Big O An introduction to the efficiency of algorithms (Reading time: 2 minutes) Big-O Notation - Constant Complexity - O(1) An algorithm has constant time complexity if it takes the same time regardless of the number of inputs. (Reading time: under 1 minute) Big-O Notation - Linear Complexity - O(n) An algorithm has linear complexity if the time taken increases linearly with the increase in the number of inputs. (Reading time: under 1 minute) Big-O Notation - Quadratic Complexity - O(n^2) If an algorithm’s time complexity is quadratic, it means that the runtime of the algorithm is directly proportional to the square of the size of the input. (Reading time: under 1 minute) Big-O Notation - Exponential Complexity - O(2^n) The runtime of the algorithm gets doubled after every addition in the input. (Reading time: 1 minute) Big-O Notation - Logarithmic Complexity - O(log(n)) The size of the input gets split into half with each iteration of the function. (Reading time: under 2 minutes) Stacks - Stacks (Implementation) create a stack, add and delete data, and print the stack (Reading time: under 2 minutes) Queues - Queues (Implementation) create a queue, add and delete items, and print the queue (Reading time: 3 minutes) Linked Lists - Singly Linked List (Implementation) create a linked list, add a node, and add and remove data to a linked list (Reading time: 4 minutes) Binary Search Tree - Binary Search Tree (Implementation) create a binary search tree and create a node in a tree (Reading time: 1 minute) Hash Table - Introduction to Hash Table A hash table is a data type that can map keys to values. (Reading time: under 3 minutes) Hash Table - Hash Table (Time Complexity) time complexity of the search, insertion and deletion functions of the hash table (Reading time: under 1 minute) Graphs - Graphs (Implementation) add a vertex, add an edge, print graph (Reading time: under 3 minutes) Bubble Sort - Bubble Sort (Implementation) (Reading time: 4 minutes) Quicksort - Introduction to Quicksort This algorithm sorts a list by choosing a pivot and comparing each element to that pivot. (Reading time: ) Quicksort - Quicksort (Time Complexity) best, average and worst case time complexity of the quicksort algorithm. (Reading time: under 1 minute) Selection Sort - Selection Sort (Time Complexity) best, average and worst case time complexity of the selection sort algorithm. (Reading time: under 1 minute) Bucket Sort - Introduction to Bucket Sort Bucket sort is a very useful sorting algorithm when working with floating point numbers. (Reading time: under 3 minutes) Radix Sort - Radix Sort (Implementation) Here, I’ll discuss the code of the radix sort algorithm. (Reading time: 4 minutes) Data Structures - Introduction to Data Structures Data structures are a collection of values, that are all connected to each other in a different way. (Reading time: under 1 minute) Queues - Queues (Time Complexity) best, average and worst case time complexity of the various queue functions (Reading time: under 1 minute) Linked Lists - Doubly Linked List A doubly linked list is the same as a singly linked list with the addition of previous pointers that point to the previous node. Graphs - Introduction to Graphs a network of vertices connected by edges (Reading time: 3 minutes) Graphs - Graphs (Depth-first traversal) The nodes are traversed from top to bottom. (Reading time: under 2 minutes) Graphs - Graphs (Breadth-first traversal) The nodes are traversed from left to right. (Reading time: under 2 minutes) Bubble Sort - Bubble Sort (Time Complexity) best, average and worst case time complexity of the bubble sort algorithm (Reading time: under 1 minute) Insertion Sort - Insertion Sort (Time Complexity) best, average and worst case time complexity of the insertion sort algorithm (Reading time: under 1 minute) Merge Sort - Introduction to Merge Sort Merge sort sorts lists by breaking them down, sorting them and then merging the sorted lists. (Reading time: under 1 minute) Merge Sort - Merge Sort (Implementation) (Reading time: 6 minutes) Quicksort - Quicksort (Implementation) (Reading time: under 3 minutes) Selection Sort - Selection Sort (Implementation) (Reading time: 3 minutes) Counting Sort - Counting Sort (Time Complexity) best, average and worst case time complexity of the counting sort algorithm (Reading time: under 1 minute) Radix Sort - Introduction to Radix Sort Radix sort is used to sort numbers, and works by sorting the least significant number to the most significant number. (Reading time: under 3 minutes) Radix Sort - Radix Sort (Time Complexity) best, average and worst case time complexity of the radix sort algorithm. (Reading time: 1 minute) Heap Sort - Heapsort (Time Complexity) best, average and worst case time complexity of the heapsort algorithm. (Reading time: under 1 minute) Stacks - Stacks (Time Complexity) best, average and worst case time complexity of the various stack functions (Reading time: under 1 minute) Linked Lists - Linked List (Time Complexity) The time complexity for get, search, insertion, and deletion functions of the linked list (Reading time: under 1 minute) Binary Search Tree - Deletion in Binary Search Tree (Reading time: 5 minutes) Binary Search Tree - Depth First Traversal As the name suggests, depth-first traversal involves traversing a tree from top to bottom. (Reading time: 2 minutes) Hash Table - Hash Table (Implementation) create a hash table, add a hash, search for a key (Reading time: 2 minutes) Sorting Algorithms - Introduction to Sorting Algorithms A brief introduction to algorithms used for sorting a list (Reading time: under 1 minute) Merge Sort - Merge Sort (Time Complexity) best, average and worst case time complexity of the merge sort algorithm (Reading time: under 1 minute) Counting Sort - Counting Sort (Implementation) (Reading time: 3 minutes) Bucket Sort - Bucket Sort (Implementation) (Reading time: 4 minutes) Heap Sort - Heap Sort (Implementation) (Reading time: 3 minutes) Stacks - Introduction to Stacks A stack is a collection of items that can only be stored or deleted in a particular order. (Reading time: under 1 minute) Linked Lists - Doubly Linked List (Implementation) constructor, add a node at the beginning and in the center, remove a node Binary Search Tree - Introduction to Binary Search Tree A binary search tree (BST) is a representation of data in a tree structure. (Reading time: 1 minute) Binary Search Tree - Insertion in Binary Search Tree (Reading time: 4 minutes) Binary Search Tree - Traversing a Binary Search Tree inorder, preorder and postorder traversal (Reading time: 2 minutes) Binary Search Tree - Binary Search Tree (Time Complexity) time complexity for the get, search, insertion and deletion functions of the binary search tree (Reading time: under 1 minute) Bubble Sort - Introduction to Bubble Sort Bubble sort sorts an array, by swapping elements that are in the wrong order. Insertion Sort - Introduction to Insertion Sort With insertion sort, you move an element that’s not in the right position all the way to the point where it should be. (Reading time: 2 minutes) Insertion Sort - Insertion Sort (Implementation) (Reading time: under 3 minutes) Selection Sort - Introduction to Selection Sort Selection sort works by finding the minimum, and then comparing each element to that minimum to decide its correct position. (Reading time: under 3 minutes) Counting Sort - Introduction to Counting Sort Counting sort is a sorting algorithm that works by calculating the positions of each element in the output sequence. (Reading time: 4 minutes) Bucket Sort - Bucket Sort (Time Complexity) best, average and worst case time complexity of the bucket sort algorithm (Reading time: under 1 minute) Heap Sort - Introduction to Heap Sort This algorithm creates a heap to sort the elements of an array. (Reading time: under 3 minutes) Binary Search Tree - Breadth-first Traversal In breadth-first traversal, we traverse the binary search tree from left to right. (Reading time: under 5 minutes) Queues - Introduction to Queues A queue is an ordered data structure where items follow the first-in-first-out principle. (Reading time: under 1 minute) Linked Lists - Singly Linked List A list of elements connected using pointers. (Reading time: under 1 minute)