## Video Description

Designed to help understand the fundamentals of DS & Algorithms really well. A must have for programming interviews.

• Be able to know and implement various data structures and algorithms

• Be able to write your own algorithms and understand if their running time is good or bad

• In Detail

This course introduces some basic data structures (arrays, linked lists, stacks, queues, trees and heaps) and algorithms (various sorting algorithms, and algorithms for operations on binary search trees and heaps). We will also cover recursion in this course. Use of graphics and animations makes the lectures very easy to understand and digest. After taking this course, you will loose your fear for data structures and algorithms.

1. Chapter 1 : Introduction to Algorithms
1. Introduction 00:01:09
2. Euclid's algorithm 00:04:50
3. Bubble Sort algorithm 00:02:53
4. Why study data structures & algorithms 00:03:10
5. Correctness of an algorithm 00:01:36
2. Chapter 2 : Analysis of Algorithms
1. Introduction 00:03:20
2. How to calculate the time complexity 00:02:52
3. The RAM model of computation 00:02:07
4. Time complexity of Bubble sort algorithm 00:03:25
5. Pseudo code : Bubble sort algorithm 00:05:18
6. The Big O notation 00:03:26
7. Using Big O notation : Examples 00:04:41
8. Comparison of running times 00:04:03
3. Chapter 3 : Basic Sorting and Search Algorithms
1. Selection Sort 00:02:48
2. Selection Sort: Pseudocode 00:02:35
3. Introduction to Insertion Sort 00:01:56
4. Applying Insertion Sort algorithm to cue balls 00:02:08
5. Insertion Sort: Pseudocode 00:02:38
6. O(n²) sorting algorithms – Comparison 00:02:00
7. Stable Vs Unstable Sorts 00:03:46
8. Searching elements in an un ordered array 00:03:17
9. Searching elements in an ORDERED array 00:02:33
10. Searching elements in an ORDERED array - contd. 00:05:48
11. Inserting and Deleting items in an ORDERED array 00:02:09
12. Sorting any type of object 00:01:33
4. Chapter 4 : Linked Lists
1. What is a Linked List? 00:03:21
2. Implementing a Linked List in Java 00:00:56
3. Inserting a new Node 00:05:25
4. Length of a Linked List 00:02:11
5. Deleting the head node 00:02:11
6. Searching for an Item 00:03:12
7. Doubly Ended Lists 00:03:06
8. Inserting data in a sorted Linked List 00:04:38
10. Insertion Sort revisited 00:10:32
5. Chapter 5 : Stacks and Queues
1. Stacks 00:02:41
2. Abstract Data Types 00:00:37
3. Implementing Stacks using Arrays 00:03:22
4. Queues 00:02:32
5. Queues using Arrays 00:05:30
6. Double Ended Queues 00:01:59
7. Double Ended Queues using Arrays 00:04:20
6. Chapter 6 : Recursion
1. Introduction 00:04:33
2. Understanding Recursion 00:03:04
3. Tail recursion 00:02:48
4. Tower of Hanoi 00:08:25
5. Tower of Hanoi – Implementation 00:02:59
6. Merge Sort 00:04:10
7. Merge Sort – Pseudocode 00:04:25
8. Merge Step – Pseudocode 00:04:32
9. Time Complexity of Merge Sort 00:02:52
7. Chapter 7 : Binary Search Trees
1. The Tree Data structure 00:03:41
2. Binary Trees 00:03:34
3. Binary Search Trees 00:02:02
4. Finding an item in a Binary Search Tree 00:02:25
5. Implementing the find method 00:03:03
6. Inserting an item in a Binary Search Tree 00:03:34
7. Deleting an Item: Case 1 00:06:06
8. Deleting an Item - Case 2 00:02:59
9. Deleting an Item - Case 3 00:03:45
10. Deleting an Item - Soft Delete 00:01:41
11. Finding smallest & largest values 00:02:34
12. Tree Traversal: In Order 00:03:19
13. Tree Traversal: Pre Order 00:01:59
14. Tree Traversal: Post Order 00:00:57
15. Unbalanced Trees Vs Balanced Trees 00:02:16
16. Height of a Binary Tree 00:01:35
17. Time Complexity of Operations on Binary Search Trees 00:02:16
8. Chapter 8 : More Sorting Algorithms
1. Introduction 00:01:27
2. QuickSort 00:04:54
3. QuickSort: The partition step 00:02:22
4. Shell Sort 00:05:27
5. Shell Sort Example 00:03:28
6. Counting Sort 00:04:51
8. Bucket Sort 00:03:12
9. Chapter 9 : Heaps
1. Introduction 00:04:07
2. Deleting the Root 00:01:54
3. Inserting an item in a heap 00:01:59
4. Heaps as Priority Queues 00:02:31
5. Representing heaps using Arrays 00:01:56
6. Heap Sort 00:02:30
7. Building a heap 00:04:07
10. Chapter 10 : Hashtables
1. Introduction 00:02:41
2. Direct Access Tables 00:02:04
3. Hashing 00:01:38
4. Resolving collisions through chaining 00:04:17
5. The Hash function 00:06:17
6. Open Addressing to resolve collisions 00:02:59
7. Strategies for Open Addressing 00:03:19
8. Time Complexity: Open Addressing 00:03:21
9. Conclusion 00:00:59

## Product Information

• Title: Introduction to Data Structures & Algorithms in Java
• Author(s): Raghavendra Dixit
• Release date: July 2017
• Publisher(s): Packt Publishing
• ISBN: 9781788628648