Skip to content

Commit 1812da7

Browse files
Update README.md
1 parent 2090ea2 commit 1812da7

File tree

1 file changed

+17
-20
lines changed

1 file changed

+17
-20
lines changed

Diff for: README.md

+17-20
Original file line numberDiff line numberDiff line change
@@ -61,35 +61,35 @@ and then you can import it into your programs or CLI
6161
const { LinkedList, Queue, Stack } = require('dsa.js');
6262
```
6363

64-
For a full list of all the exposed data structures and algorithms [see](src/index.js).
64+
For a list of all available data structures and algorithms, [see index.js](src/index.js).
6565

6666

6767
## Features
6868

6969
Algorithms are an essential toolbox for every programmer.
7070

71-
You usually need algorithms when you have to sort data, search for a value, transform data, scale your code to many users, to name a few.
72-
Algorithms are just the step you follow to solve a problem while data structures are where you store the data for later manipulation. Both combined create programs.
71+
You will need to mind algorithms runtime when you have to sort data, search for a value in a big dataset, transform data, scale your code to many users, to name a few.
72+
Algorithms are just the step you follow to solve a problem, while data structures are where you store the data for later manipulation. Both combined create programs.
7373

7474
> Algorithms + Data Structures = Programs.
7575
7676
Most programming languages and libraries indeed provide implementations for basic data structures and algorithms.
77-
However, to make use of data structures properly, you have to know the tradeoffs so you can choose the best tool for the job.
77+
However, to make use of data structures properly, you have to know the tradeoffs to choose the best tool for the job.
7878

7979
This material is going to teach you to:
8080

8181
- 🛠 Apply strategies to tackle algorithm questions. Never to get stuck again. Ace those interviews!
82-
- ✂️ Construct efficient algorithms. Learn how to break down problems in manageable pieces.
83-
- 🧠 Improve your problem-solving skills and become a stronger developer by understanding fundamental computer science concepts.
82+
- ✂️ Construct efficient algorithms. Learn how to break down problems into manageable pieces.
83+
- 🧠 Improve your problem-solving skills and become a well-rounded developer by understanding fundamental computer science concepts.
8484
- 🤓 Cover essential topics, such as big O time, data structures, and must-know algorithms. Implement 10+ data structures from scratch.
8585

8686
## What's Inside
8787

8888
All the code and explanations are available on this repo. You can dig through the links and code examples from the ([src folder](src)). However, the inline code examples are not expanded (because of Github's asciidoc limitations), but you can follow the path and see the implementation.
8989

90-
_Note: If you prefer to consume the information more linearly then the [book format](https://books.adrianmejia.com/dsajs-data-structures-algorithms-javascript/) would be more appropriate for you._
90+
_Note: If you prefer to consume the information more linearly, then the [book format](https://books.adrianmejia.com/dsajs-data-structures-algorithms-javascript/) would be more appropriate for you._
9191

92-
The topics are divided into four main categories as you can see below:
92+
The topics are divided into four main categories, as you can see below:
9393

9494

9595
### 📈 [Algorithms Analysis](book/part01-algorithms-analysis.asc)
@@ -129,8 +129,7 @@ The topics are divided into four main categories as you can see below:
129129
#### Comparing algorithms using Big O notation
130130

131131
Let's say you want to find the duplicates on an array.
132-
Using Big O notation, we can compare different implementations that do the same but
133-
they take different time to complete.
132+
Using Big O notation, we can compare different solutions that solve the same problem but has a massive difference in how long it takes to do it.
134133

135134
- [Optimal solution using a map](book/content/part01/big-o-examples.asc#linear-example)
136135
- [Finding duplicates in an array (naïve approach)](book/content/part01/big-o-examples.asc#quadratic-example)
@@ -225,7 +224,6 @@ they take different time to complete.
225224
Use Arrays when…
226225
- You need to access data in random order fast (using an index).
227226
- Your data is multi-dimensional (e.g., matrix, tensor).
228-
- when there is a limit on memory as the requirement of memory is less due to actual data being stored within the index in the array.
229227

230228
Use Linked Lists when:
231229
- You will access your data sequentially.
@@ -302,8 +300,7 @@ Know all the graphs properties with many images and illustrations.
302300
![graph example with USA airports](book/images/image46.png)
303301

304302
**Graphs**: data **nodes** that can have a connection or **edge** to
305-
zero or more adjacent nodes. Unlike trees, nodes can have multiple
306-
parents, loops.
303+
zero or more adjacent nodes. Unlike trees, nodes can have multiple parents, loops.
307304
[Code](src/data-structures/graphs/graph.js)
308305
|
309306
[Graph Time Complexity](book/content/part03/graph.asc#graph-complexity)
@@ -316,7 +313,7 @@ Learn all the different kinds of trees and their properties.
316313

317314
- **Trees**: data nodes has zero or more adjacent nodes a.k.a.
318315
children. Each node can only have one parent node otherwise is a
319-
graph not a tree.
316+
graph, not a tree.
320317
[Code](src/data-structures/trees)
321318
|
322319
[Docs](book/content/part03/tree-intro.asc)
@@ -383,7 +380,7 @@ From unbalanced BST to balanced BST
383380

384381
### [Algorithmic Toolbox](book/part04-algorithmic-toolbox.asc)
385382

386-
<!-- - Never get stuck solving a problem with 7 simple steps. -->
383+
<!-- - Never get stuck solving a problem with seven simple steps. -->
387384
<!-- - Master the most popular sorting algorithms (merge sort, quicksort, insertion sort, etc.) -->
388385
<!-- - Learn different approaches to solve problems such as divide and conquer, dynamic programming, greedy algorithms, and backtracking. -->
389386

@@ -402,9 +399,9 @@ From unbalanced BST to balanced BST
402399
1. Brainstorm solutions (greedy algorithm, Divide and Conquer, Backtracking, brute force)
403400
1. Test your answer on the simple example (mentally)
404401
1. Optimize the solution
405-
1. Write Code, yes, now you can code.
402+
1. Write code. Yes, now you can code.
406403
1. Test your written code
407-
1. Analyse the complexity, both space and time and make sure to optimise further.
404+
1. Analyse the complexity, both space and time, and make sure to optimize further.
408405

409406
Full details [here](book/part04-algorithmic-toolbox.asc)
410407

@@ -462,8 +459,8 @@ and then discuss efficient sorting algorithms O(n log n) such as:
462459
We are going to discuss the following techniques for solving algorithms problems:
463460
- [Greedy Algorithms](book/content/part04/greedy-algorithms.asc): makes greedy choices using heuristics to find the best solution without looking back.
464461
- [Dynamic Programming](book/content/part04/dynamic-programming.asc): a technique for speeding up recursive algorithms when there are many _overlapping subproblems_. It uses _memoization_ to avoid duplicating work.
465-
- [Divide and Conquer](book/content/part04/divide-and-conquer.asc): _divide_ problems into smaller pieces, _conquer_ each subproblem and then _join_ the results.
466-
- [Backtracking](book/content/part04/backtracking.asc): search _all (or some)_ possible paths. However, it stops and _go back_ as soon as notice the current solution is not working.
462+
- [Divide and Conquer](book/content/part04/divide-and-conquer.asc): _divide_ problems into smaller pieces, _conquer_ each subproblem, and then _join_ the results.
463+
- [Backtracking](book/content/part04/backtracking.asc): search _all (or some)_ possible paths. However, it stops, and _go back_ as soon as notice the current solution is not working.
467464
- _Brute Force_: generate all possible solutions and tries all of them. (Use it as a last resort or as the starting point).
468465

469466
---
@@ -476,7 +473,7 @@ We are going to discuss the following techniques for solving algorithms problems
476473
<details>
477474
<summary>How would I apply these to my day-to-day work? <i>(Click to expand)</i></summary>
478475
<p>
479-
As a programmer, we have to solve problems every day. If you want to solve problems well, then it's good to know about a broad range of solutions. A lot of times, it's more efficient to learn existing resources than stumble upon the answer yourself. The more tools and practice you have, the better. This book helps you understand the tradeoffs among data structures and reason about algorithms performance.
476+
As a programmer, we have to solve problems every day. If you want to solve problems well, it's good to know about a broad range of solutions. Often, it's more efficient to learn existing resources than stumble upon the answer yourself. The more tools and practice you have, the better. This book helps you understand the tradeoffs among data structures and reason about algorithms performance.
480477
</p>
481478
</details>
482479

0 commit comments

Comments
 (0)