4.19 out of 5
4.19
1334 reviews on Udemy

# Algorithms and Data Structures in Python

A guide to implement the most up to date algorithms from scratch: arrays, linked lists, graph algorithms and sorting
Have a good grasp of algorithmic thinking
Be able to develop your own algorithms
Be able to detect and correct inefficient code snippets

This course is about data structures and algorithms. We are going to implement the problems in Python. I highly recommend typing out these data structures and algorithms several times on your own in order to get a good grasp of it.

Section 1:

• setting up the environment

• data structures and abstract data types

Section 2:

• what is an array data structure

• arrays related interview questions

• linked list data structure and its implementation

Section 3:

• stacks and queues

• related interview questions

Section 4:

• what are binary search trees

• practical applications of binary search trees

Section 5:

• problems with binary trees

• balanced trees: AVL trees and red-black trees

Section 6:

• what are heaps

• heapsort algorithm

Section 7:

• associative arrays and dictionaries

• how to achieve O(1) constant running time with hashing

• ternary search trees as associative arrays

Section 8:

• basic graph algorithms

• breadth-first and depth-first search

Section 9:

• shortest path algorithms

• Dijkstra’s algroithm

• Bellman-Ford algorithm

Section 10:

• what are spanning trees

• Kruskal algorithm

Section 11:

• sorting algorithms

• bubble sort, selection sort and insertion sort

• quicksort and merge sort

• non-comparison based sorting algorithms

• counting sort and radix sort

In the first part of the course we are going to learn about basic data structures such as linked lists, stacks, queues, binary search trees, heaps and some advanced ones such as AVL trees and red-black trees.. The second part will be about graph algorithms such as spanning trees, shortest path algorithms and graph traversing. We will try to optimize each data structure as much as possible.

In each chapter I am going to talk about the theoretical background of each algorithm or data structure, then we are going to write the code step by step in Python.

Most of the advanced algorithms relies heavily on these topics so it is definitely worth understanding the basics. These principles can be used in several fields: in investment banking, artificial intelligence or electronic trading algorithms on the stock market. Research institutes use Python as a programming language in the main: there are a lot of library available for the public from machine learning to complex networks.

Thanks for joining the course, let’s get started!

### Introduction

1
Introduction
2
Why to use data structures
3
Data structures and abstract data types
4
Data structures and abstract data types quiz

### Setup

1
Installing python

### Data Structures - Arrays

1
Arrays introduction - basics
2
Arrays introduction - operations
3
Arrays in Python

### Data Structures - Linked LIsts

1
Linked list introduction - basics
2
Linked list introduction - operations
3
Linked list theory - doubly linked list
4
Linked list introduction - linked lists versus arrays
5
Linked list implementation I - insert
6
Linked list implementation II - traverse
7
Linked list implementation III - remove
8
Linked list implementation IV - testing
9
Doubly linked list introduction
10
Practical (real-world) applications of linked lists
11
Lists Quiz

### Data Structures - Stacks & Queues

1
Stack introduction
2
Stacks in memory management ( stacks, heaps )
3
Stacks and recursive method calls
4
Stack implementation
5
Queue introduction
6
Queue implementation
7
Practical (real-world) applications of stacks
8
Stack & Queue Quiz

### Data Structures - Binary Search Trees

1
Binary search trees theory - basics
2
Binary search trees theory - search, insert
3
Binary search trees theory - delete
4
Binary search trees theory - in-order traversal
5
Binary search trees theory - running times
6
Binary search tree implementation I - Node class
7
Binary Search Tree implementation II - insert
8
Binary Search Tree implementation III - traverse, min, max
9
Binary Search Tree implementation IV - testing insertion
10
Binary Search Tree implementation V - deletion
11
Binary Search Tree implementation VI - testing deletion
12
Practical (real-world) applications of trees
13
Binary Search Trees Quiz

### Data Structures - Balanced Binary Trees (AVL Trees)

1
AVL trees introduction - motivation
2
AVL trees introduction - basics
3
AVL trees introduction - height
4
AVL trees introduction - rotations cases
5
AVL trees introduction - illustration
6
AVL trees introduction - applications
7
AVL tree implementation I - Node
8
AVL tree implementation II - height, balance
9
AVL tree implementation III - rotations
10
AVL tree implementation IV - insertion
11
AVL tree implementation V - violations
12
AVL tree implementation VI - testing insertion
13
AVL tree implementation VII - remove

### Data Structures - Balanced Binary Trees (Red-Black Trees)

1
Red-black trees introduction - basics
2
The logic behind red-black trees
3
Red-black trees rotations- cases I
4
Red-black trees rotations- cases II
5
Red-black trees rotations- cases III
6
Red-black trees rotations- cases IV
7
Red-black trees introduction - example I
8
Red-black trees introduction - example II
9
Red-black tree versus AVL tree
10
Balanced Trees Quiz

### Data Structures - Heaps

1
Priority queues introduction
2
Heap introduction - basics
3
Heap introduction - array representation
4
Heap introduction - remove operation
5
Heap introduction - heapsort
6
Heap introduction - operations complexities
7
Other types of heaps: binomial and Fibonacci heap
8
Heap implementation I
9
Heap implementation II
10
Heap implementation III
11
Heaps in Python
12
Heaps Quiz

### Data Structures - Associative Arrays / Dictionaries

1
Associative array ADT
2
Hashtable introduction - basics
3
Hashtable introduction - collisions
4
Hashtable introduction - dynamic resizing
5
Why to use prime numbers in hashing?
6
Linear probing implementation I - hashfunction
7
Linear probing implementation II - insert
8
Linear probing implementation III - retrieve
9
Dictionaires in Python
10
Practical (real-world) applications of hashing
11
Dictionaries Quiz

### Data Structures - Tries

1
Tries introduction
2
Tries implementation
3
Ternary search trees introduction - insert
You can view and review the lecture materials indefinitely, like an on-demand channel.
Definitely! If you have an internet connection, courses on Udemy are available on any device at any time. If you don't have an internet connection, some instructors also let their students download course lectures. That's up to the instructor though, so make sure you get on their good side!
4.2
4.2 out of 5
1334 Ratings

#### Detailed Rating

 Stars 5 575 Stars 4 483 Stars 3 188 Stars 2 58 Stars 1 30 30-Day Money-Back Guarantee

#### Includes

14 hours on-demand video
15 articles
Full lifetime access
Access on mobile and TV
Certificate of Completion