Introduction to Data Structures & Algorithms in Java
4.2 (2,307 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
19,416 students enrolled

Introduction to Data Structures & Algorithms in Java

Designed to help understand the fundamentals of DS & Algorithms really well. A must have for programming interviews.
4.2 (2,307 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
19,416 students enrolled
Created by Raghavendra Dixit
Last updated 3/2016
English
English [Auto-generated]
Current price: $11.99 Original price: $74.99 Discount: 84% off
1 day left at this price!
30-Day Money-Back Guarantee
This course includes
  • 5 hours on-demand video
  • 11 articles
  • 26 downloadable resources
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Training 5 or more people?

Get your team access to Udemy's top 3,000+ courses anytime, anywhere.

Try Udemy for Business
What you'll learn
  • 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

Course content
Expand all 103 lectures 05:04:55
+ Introduction to Algorithms
5 lectures 13:34
Euclid's algorithm
04:49
Bubble Sort algorithm
02:52
Why study data structures & algorithms
03:10
Correctness of an algorithm
01:35
Chapter Quiz
2 questions
+ Analysis of Algorithms
9 lectures 27:38
Time complexity of Bubble sort algorithm
03:25
Pseudo code : Bubble sort algorithm
03:02
The Big O notation
03:26
Using Big O notation : Examples
04:41
Comparison of running times
04:02
Chapter Quiz
7 questions
+ Basic Sorting and Search Algorithms
14 lectures 34:48
Selection Sort
02:48

One of the problems that people face in writing algorithms is how to translate their thoughts into a programming language. Many people cannot even start writing the very first statement of an algorithm. I suggest that if you are having such trouble, don't try to solve the whole problem together, rather break it down into smaller, easier parts. For e.g. try doing the following in writing code for the selection sort algorithm -

  • First try to write a method, which just finds the minimum number in the data array. Don't think about anything else, just that method. If you write it in a different method, then you may need to pass the data array as a parameter to that method. Return the index of that minimum element from this method.
  • Now change the method to find the minimum number STARTING FROM A PARTICULAR INDEX. So you will need to pass this index as a parameter.
  • Write another method which can swap items in an array, located at two different indexes. What parameters should be passed to this method?

Hopefully, by this time you will have enough clarity on completing the sorting algorithm, if you understood the pseudo code.

Selection Sort : Pseudocode
02:34
Introduction to Insertion Sort
01:56
Applying Insertion Sort algorithm to cue balls
02:08
Insertion Sort: Pseudocode
02:38
O(n²) sorting algorithms - Comparison
02:00
In place sorting
00:54
Stable Vs Unstable Sorts
03:46
Searching elements in an un ordered array
03:16
Searching elements in an ORDERED array
02:33
Searching elements in an ORDERED array - contd.
05:48
Inserting and Deleting items in an ORDERED array
02:08

Try to write generic sort methods, like shown in the InsertionSortWithGenerics.java, for Bubble sort and Selection sort algorithms as an exercise. But if you don't want to get into generics at this point, you may choose to skip this section.

Sorting any type of object
01:33
Chapter Quiz
6 questions
Assignment
00:46
+ Linked Lists
12 lectures 44:05
What is a Linked List?
03:21
Implementing a Linked List in Java
00:56
Inserting a new Node
05:25
Length of a Linked List
02:11
Deleting the head node
02:11
Searching for an Item
03:11
Using java generics to parameterize the LinkedList
01:21
Doubly Ended Lists
03:05
Inserting data in a sorted Linked List
04:38
Doubly Linked List
06:28
Insertion Sort revisited
10:32
Chapter Quiz
4 questions
Assignment
00:45
+ Stacks and Queues
8 lectures 21:47
Stacks
02:41
Abstract Data Types
00:37
Implementing Stacks using Arrays
03:21
Queues
02:32
Queues using Arrays
05:29
Double Ended Queues
01:58
Double Ended Queues using Arrays
04:20
Chapter Quiz
7 questions
Assignment
00:49
+ Recursion
10 lectures 38:17
Introduction
04:33
Understanding Recursion
03:04
Tail recursion
02:48
Tower of Hanoi
08:25
Tower of Hanoi - Implementation
02:58
Merge Sort
04:09
Merge Sort - Pseudocode
04:24
Merge Step - Pseudocode
04:32
Time Complexity of Merge Sort
02:52
Chapter Quiz
6 questions
Assignment
00:32
+ Binary Search Trees
18 lectures 47:52
The Tree Data structure
03:41
Binary Trees
03:34
Binary Search Trees
02:01
Finding an item in a Binary Search Tree
02:24
Implementing the find method
03:02
Inserting an item in a Binary Search Tree
03:34
Deleting an Item : Case 1
06:06
Deleting an Item - Case 2
02:58
Deleting an Item - Case 3
03:44
Deleting an Item - Soft Delete
01:40
Finding smallest & largest values
02:33
Tree Traversal : In Order
03:19
Tree Traversal : Pre Order
01:58
Tree Traversal : Post Order
00:56
Unbalanced Trees Vs Balanced Trees
02:16
Height of a Binary Tree
01:34
Time Complexity of Operations on Binary Search Trees
02:16
Chapter Quiz
5 questions
Assignment
00:16
+ More Sorting Algorithms
9 lectures 28:13
Introduction
01:27
QuickSort
04:54
QuickSort: The partition step
02:21
Shell Sort
05:27
Shell Sort: Example
03:28
Counting Sort
04:50
Radix Sort
02:27
Bucket Sort
03:12
Chapter Quiz
3 questions
Assignment
00:07
+ Heaps
8 lectures 19:06
Introduction
04:06
Deleting the root
01:54
Inserting an item in a heap
01:59
Heaps as Priority Queues
02:30
Representing heaps using Arrays
01:55
Heap Sort
02:30
Building a heap
04:07
Chapter Quiz
5 questions
Assignment
00:05
+ Hashtables
10 lectures 27:54
Introduction
02:41
Direct Access Tables
02:04
Hashing
01:37
Resolving collisions through chaining
04:16
The Hash function
06:16
Open Addressing to resolve collisions
02:58
Strategies for Open Addressing
03:19
Time Complexity: Open Addressing
03:20
Chapter Quiz
7 questions
Assignment
00:24

This last lecture also contains the complete project file (zipped) in the downloadable materials section.

Conclusion
00:59
Requirements
  • Although any programming language may be used by the student, we use the java programming language to implement algorithms.
Description

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.

Who this course is for:
  • Anyone who wants to learn data structures and algorithms (introductory)
  • Anyone appearing for interviews, can be used to understand from grounds up, or as a quick revision