-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
54151e4
commit 51b38a4
Showing
4 changed files
with
222 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,35 @@ | ||
# javascript-dsa | ||
|
||
Data Structures and Algorithms with Javascript | ||
|
||
This material is created by attending this [Udemy course](https://www.udemy.com/share/101X5s3@epD9k8IzwG2M-l0Xvkjkl86zC81vfrZFb0q-mBUX0Mf5bwg2Pqd59Gpz685PgzLT/) | ||
|
||
## Topics | ||
|
||
> 1. Big O Notation | ||
> 2. Analyzing Performance of Arrays and Objects | ||
> 3. Problem Solving Approach | ||
> 4. Problem Solving Patterns | ||
> 5. Recursion | ||
> 6. Searching Algorithms | ||
> 7. Sorting Algorithms | ||
> 8. Data Structures | ||
- Singly Linked Lists | ||
- Doubly Linked Lists | ||
- Stacks | ||
- Queues | ||
- Binary Search Trees | ||
- Tree Traversal | ||
- Binary Heaps | ||
- Hash Tables | ||
- Graphs | ||
- Graph Traversal | ||
- Dijkstra's Algorithm |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
{ | ||
"cells": [ | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"## `Topics`\n", | ||
"\n", | ||
"> [1. Big O Notation](./material/01-big-o-notation/00-index.ipynb)\n", | ||
"\n", | ||
" - [Need for **Big O Notation**](./material/01-big-o-notation/01-big-o-notation.ipynb)\n", | ||
" - [Describe what **Big O Notation** is](./material/01-big-o-notation/01-big-o-notation.ipynb)\n", | ||
" - Simplify `Big O Expressions`\n", | ||
" - Define `time complexity` and `space complexity`\n", | ||
" - Evaluate the `time complexity` and `space complexity` of different algorithms using `Big O Notation`\n", | ||
" - Touch upon `logarithm`\n", | ||
" \n", | ||
"> [2. Analyzing Performance of Arrays and Objects]()\n", | ||
"\n", | ||
"> [3. Problem Solving Approach]()\n", | ||
"\n", | ||
"> [4. Problem Solving Patterns]()\n", | ||
"\n", | ||
"> [5. Recursion]()\n", | ||
"\n", | ||
"> [6. Searching Algorithms]()\n", | ||
"\n", | ||
"> [7. Sorting Algorithms]()\n", | ||
"\n", | ||
"> [8. Data Structures]()\n", | ||
"\n", | ||
" - Singly Linked Lists\n", | ||
" - Doubly Linked Lists\n", | ||
" - Stacks\n", | ||
" - Queues\n", | ||
" - Binary Search Trees\n", | ||
" - Tree Traversal\n", | ||
" - Binary Heaps\n", | ||
" - Hash Tables\n", | ||
" - Graphs\n", | ||
" - Graph Traversal\n", | ||
" - Dijkstra's Algorithm\n" | ||
] | ||
} | ||
], | ||
"metadata": { | ||
"kernelspec": { | ||
"display_name": "JavaScript (Node.js)", | ||
"language": "javascript", | ||
"name": "javascript" | ||
}, | ||
"language_info": { | ||
"name": "javascript" | ||
}, | ||
"orig_nbformat": 4 | ||
}, | ||
"nbformat": 4, | ||
"nbformat_minor": 2 | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
{ | ||
"cells": [ | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"[back](../../index.ipynb)\n", | ||
"\n", | ||
"---\n", | ||
"## `Big O Notation`\n", | ||
"\n", | ||
" - [Need for **Big O Notation**](./01-big-o-notation.ipynb)\n", | ||
" - [Describe what **Big O Notation** is](./01-big-o-notation.ipynb)\n", | ||
" - [Simplify **Big O Expressions**]()\n", | ||
" - [Define **time complexity** and **space complexity**]()\n", | ||
" - [Evaluate the **time complexity** and **space complexity** of different algorithms using **Big O Notation**]()\n", | ||
" - [Touch upon **logarithm**]()" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"\n", | ||
"---\n", | ||
"[next](./01-big-o-notation.ipynb)" | ||
] | ||
} | ||
], | ||
"metadata": { | ||
"kernelspec": { | ||
"display_name": "JavaScript (Node.js)", | ||
"language": "javascript", | ||
"name": "javascript" | ||
}, | ||
"language_info": { | ||
"name": "javascript" | ||
}, | ||
"orig_nbformat": 4 | ||
}, | ||
"nbformat": 4, | ||
"nbformat_minor": 2 | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
{ | ||
"cells": [ | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"[back](./00-index.ipynb)\n", | ||
"\n", | ||
"---\n", | ||
"## `Big O Notation`" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"### `What's the idea here?`" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"\n", | ||
"- Usually there could be more than one solution for any given problem and how do we know what's best?\n", | ||
"- For example, consider a problem where we have two valid solutions, both different not just in terms of variable names but in terms of the approach, where one uses loops and the other recursion to accomplish the same task.\n", | ||
"- How would we know which one is the best?\n", | ||
"- That's what is `Big O` really about, a system / way of generalizing code and comparing them and it's performance with other piece of code." | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"### `Scenario`" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"\n", | ||
"- Write a function that accepts a string input and returns a reversed copy\n", | ||
"- There are a lot of ways in which this can be achieved, but how to categorize them as to which one is best, which one is good etc\n", | ||
"- And instead of giving labels or color-code based on the performance, we can have numerical representation of the performance of the code and that is what `Big O` would provide." | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"### `Who cares?`" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"\n", | ||
"- For smaller instance it might not be required to know the performance, but what if for an interview purpose / at work, we have a large set of data? and a particular algorithm might save one hour every time it runs, so performance would matter at that time.\n", | ||
"- It's important to have a precise vocabulary to talk about how our code performs.\n", | ||
"- It is also useful to discuss trade-offs between different approaches. Where one might great at handling large set of data and other one might be always consistent, but it might take more time upfront.\n", | ||
"- Also, while debugging, it might help understand things that are slowing it down." | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"\n", | ||
"---\n", | ||
"[next]()" | ||
] | ||
} | ||
], | ||
"metadata": { | ||
"kernelspec": { | ||
"display_name": "JavaScript (Node.js)", | ||
"language": "javascript", | ||
"name": "javascript" | ||
}, | ||
"language_info": { | ||
"name": "javascript" | ||
}, | ||
"orig_nbformat": 4 | ||
}, | ||
"nbformat": 4, | ||
"nbformat_minor": 2 | ||
} |