TimestampsΒΆ
Introduction To AlgorithmsΒΆ
Playing a Counting GameΒΆ
0:25 -What Is an Algorithm?
6:50 - Guess the Number
12:46 - Defining an Algorithm
21:15 - Evaluating Linear Search
29:58 - Evaluating Binary Search
Time ComplexityΒΆ
36:11 - Efficiency of an Algorithm
42:39 - Constant and Logarithmic Time
49:11 - Linear & Quadratic Time
53:48 - Quasilinear Time
56:23 - Exponential Time
1:04:23 - Determining Complexity
Algorithms in CodeΒΆ
1:08:22 - Linear Search in Code
1:18:02 - Binary Search in Code
1:28:06 - Recursive Binary Search
Recursion and Space ComplexityΒΆ
1:41:14 - Recursive Functions
1:46:18 - Space Complexity
1:53:07 - Recap of Algorithms in Code
Introduction to Data StructuresΒΆ
Exploring ArraysΒΆ
1:57:44 - Introduction
2:00:40 - Array Basics
2:06:20 - Accessing a Value in an Array
2:13:06 - Array Search, Insert and Delete
Building a Linked ListΒΆ
2:22:57 - What Is a Linked List?
2:36:15 - Adding Nodes to a Linked List
2:44:05 - Implementing Search
2:48:34 - Inserting a Node
2:55:20 - Removing a Node
The Merge Sort AlgorithmΒΆ
3:03:06 - Merge Sort
3:11:13 - Splitting Into Sublists
3:14:27 - Recursively Merging Sublists
3:21:34 - Ensuring the Correctness of Merge Sort
3:28:17 - Evaluating the Runtime of Merge Sort
Sorting a Linked ListΒΆ
3:35:40 - The Merge Function
3:40:31 - The Divide Step
3:47:56 - The Conquer Step
4:00:11 - Evaluating the Runtime
4:08:46 - Recap of Introduction to Data Structures
Algorithms: Sorting and SearchingΒΆ
Sorting AlgorithmsΒΆ
4:11:02 - Sorting and Searching
4:14:56 - Bogo-Sort
4:20:36 - Selection Sort
4:27:11 - Getting the Run Time of a Program
4:31:17 - Recursion
4:41:18 - Quicksort
4:47:12 - Implementing Quicksort
4:52:34 - Merge Sort
4:59:45 - Actual Run Time for Sorting Algorithms
5:02:00 - Big-O Run Times of Sorting Algorithms
Searching NamesΒΆ
5:07:42 - Linear Search
5:12:04 - Sorting Names
5:14:04 - Binary Search
5:19:22 - Timing Our Search Scripts
5:20:41 - Big O Runtime of Search Algorithms
(0:00:00) Introduction to AlgorithmsΒΆ
- Cover basics foundations of algorithms.
- Less about specific algorithms, but to evaluate and how they perform and the utility in a given context, utilising examples with well known algorithms.
- Programming knowledge expected.
- Python Programming Language.
- Description contains additional content that may be useful.
What is an algorithmΒΆ
A set of steps or instructions for completing a task. (e.g. road directions, food recipes, or even a wake-up routine are all algorithms)
Example Provided in Video:ΒΆ
A teacher has a maze on the board, and asks 3 students for their quickest solutions to solve the maze, each solution to the problem is it's own viable algorithm for solving the path (the steps one needs to take) to the maze however, some may have better ideas than others.
An algorithm is a solution to a problem that has been solved, as a result of potentially not being aware that the solution exists, then it may be sought out however, it can be definitely said that it may not be to the same level of efficiency as the most adapted algorithmic solution that has been thoroughly reviewed.
It is not just understanding an algorithm exists, but when to apply it, which requires understanding the problem at hand which is a priority of algorithms & data structures.
It is important to decompose (break it down step-by-step) and analyse the effective algorithm or data structure to utilise in the instance it is needed for the task at hand.
Greater level of efficiency and complexity understanding in programming.
Algorithmic thinking comes up in job applications, as a way to identify to employers that the candidate can perform decomposition and break down a problem into its components and assess the individual components of the given problem.
[[Video Notes Template V1]]