Introduction to Data Structures & Algorithms in Java
4.1 (1,697 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
17,703 students enrolled
Wishlisted Wishlist

Please confirm that you want to add Introduction to Data Structures & Algorithms in Java to your Wishlist.

Add to Wishlist

Introduction to Data Structures & Algorithms in Java

Designed to help understand the fundamentals of DS & Algorithms really well. A must have for programming interviews.
Best Seller
4.1 (1,697 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
17,703 students enrolled
Created by Raghavendra Dixit
Last updated 3/2016
English
English [Auto-generated]
Current price: $10 Original price: $75 Discount: 87% off
5 hours left at this price!
30-Day Money-Back Guarantee
Includes:
  • 5 hours on-demand video
  • 11 Articles
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What Will I 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
View Curriculum
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 is the target audience?
  • 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
Compare to Other Java Algorithms Courses
Curriculum For This Course
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
About the Instructor
Raghavendra Dixit
4.3 Average rating
3,181 Reviews
47,014 Students
2 Courses
Dizauvi Learning Solutions

I am a graduate of the Indian Institute of Technology, popularly known as IIT. I have worked as a Technical Architect in both product & services based software companies with about 14 years of programming experience (as of June, 2013). I have worked with languages like Perl/Java/Objective C/Scala and JavaScript. I have also used various frameworks/platforms like Spring, Play, Cocoa and Android. I have lead some enterprise application development. In my free time I like to create technical content, which is easy to follow and really helps people in the software industry, do their job better. People undergoing my trainings and videos always have delightful experience and most of them have told me that they wish things were taught in this way at school too. I hope that people taking my courses here benefit to perform their programming jobs better and also are able to get to better positions, with confidence, in case they are looking out. Most recently I have worked as VP Engineering in a Sequoia funded startup and now I am off to do my own startup.