Skip to content

Commit 390c490

Browse files
committed
Everything
0 parents  commit 390c490

26 files changed

+802
-0
lines changed

.gitignore

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# Created by .ignore support plugin (hsz.mobi)
2+
### Node template
3+
# Logs
4+
logs
5+
*.log
6+
npm-debug.log*
7+
8+
# Runtime data
9+
pids
10+
*.pid
11+
*.seed
12+
*.pid.lock
13+
14+
# Directory for instrumented libs generated by jscoverage/JSCover
15+
lib-cov
16+
17+
# Coverage directory used by tools like istanbul
18+
coverage
19+
20+
# nyc test coverage
21+
.nyc_output
22+
23+
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
24+
.grunt
25+
26+
# node-waf configuration
27+
.lock-wscript
28+
29+
# Compiled binary addons (http://nodejs.org/api/addons.html)
30+
build/Release
31+
32+
# Dependency directories
33+
node_modules
34+
jspm_packages
35+
36+
# Optional npm cache directory
37+
.npm
38+
39+
# Optional eslint cache
40+
.eslintcache
41+
42+
# Optional REPL history
43+
.node_repl_history
44+
45+
# Output of 'npm pack'
46+
*.tgz
47+
48+
# Yarn Integrity file
49+
.yarn-integrity
50+
51+

package.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"name": "typescript-algorithms",
3+
"version": "1.0.0",
4+
"description": "",
5+
"main": "index.js",
6+
"scripts": {
7+
"test": "echo \"Error: no test specified\" && exit 1"
8+
},
9+
"author": "",
10+
"license": "ISC",
11+
"dependencies": {
12+
"benchmark": "^2.1.2",
13+
"chart": "github:jstrace/chart"
14+
}
15+
}

src/big-o/o-1.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { generateArray, runBenchmark } from '../helpers';
2+
let arrays = [
3+
generateArray(10),
4+
generateArray(20),
5+
generateArray(30),
6+
generateArray(40),
7+
generateArray(50),
8+
generateArray(60),
9+
generateArray(70),
10+
generateArray(80),
11+
generateArray(90),
12+
generateArray(100)
13+
];
14+
//O(1)
15+
function biggerThan(numbers, biggerThan) {
16+
return numbers.length > biggerThan;
17+
}
18+
const suite = new Benchmark.Suite('O(1) will always execute in the same time regardless of the input size:');
19+
for (let i = 0; i < arrays.length; i++) {
20+
suite.add(`${arrays[i].length}`, () => biggerThan(arrays[i], 1));
21+
}
22+
runBenchmark(suite);

src/big-o/o-1.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import Benchmark = require('benchmark');
2+
import { generateArray, runBenchmark } from '../helpers';
3+
4+
let arrays = [
5+
generateArray(10),
6+
generateArray(20),
7+
generateArray(30),
8+
generateArray(40),
9+
generateArray(50),
10+
generateArray(60),
11+
generateArray(70),
12+
generateArray(80),
13+
generateArray(90),
14+
generateArray(100)
15+
];
16+
17+
//O(1)
18+
function biggerThan(numbers:Array<number>, biggerThan:number): boolean {
19+
return numbers.length > biggerThan;
20+
}
21+
22+
const suite = new Benchmark.Suite('O(1) will always execute in the same time regardless of the input size:');
23+
for(let i = 0; i < arrays.length; i++) {
24+
suite.add(`${arrays[i].length}`, () => biggerThan(arrays[i], 1));
25+
}
26+
runBenchmark(suite);

src/big-o/o-2n.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { runBenchmark } from '../helpers';
2+
let arrays = [
3+
1, 2, 3, 4, 5, 6
4+
];
5+
//O(2n)
6+
function fibonacci(num) {
7+
if (num <= 1) {
8+
return num;
9+
}
10+
return fibonacci(num - 2) + fibonacci(num - 1);
11+
}
12+
const suite = new Benchmark.Suite('O(2^n) will perform in exponentially in proportion to size of the data set');
13+
for (let i = 0; i < arrays.length; i++) {
14+
suite.add(`${arrays[i]}`, () => fibonacci(arrays[i]));
15+
}
16+
runBenchmark(suite);

src/big-o/o-2n.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import Benchmark = require('benchmark');
2+
import { runBenchmark } from '../helpers';
3+
4+
let arrays = [
5+
1, 2, 3, 4, 5, 6
6+
];
7+
8+
//O(2n)
9+
function fibonacci(num:number):number {
10+
if (num <= 1) {
11+
return num;
12+
}
13+
return fibonacci(num - 2) + fibonacci(num - 1);
14+
}
15+
16+
const suite = new Benchmark.Suite('O(2^n) will perform in exponentially in proportion to size of the data set');
17+
for(let i = 0; i < arrays.length; i++) {
18+
suite.add(`${arrays[i]}`, () => fibonacci(arrays[i]));
19+
}
20+
21+
runBenchmark(suite);

src/big-o/o-logn.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { generateArray, runBenchmark } from '../helpers';
2+
import binarySeach from '../binary-search/iterative';
3+
let arrays = [
4+
generateArray(1000),
5+
generateArray(2000),
6+
generateArray(3000),
7+
generateArray(4000),
8+
generateArray(5000),
9+
generateArray(6000),
10+
generateArray(7000),
11+
generateArray(8000),
12+
generateArray(9000),
13+
generateArray(10000)
14+
];
15+
//O(log(2, n)
16+
const suite = new Benchmark.Suite('O(2, n) will perform logarithmically in proportion to the size of the data set:');
17+
for (let i = 0; i < arrays.length; i++) {
18+
let toFind = arrays[i][Math.round(arrays[i].length * 0.3)];
19+
suite.add(`${arrays[i].length}`, () => binarySeach(toFind, arrays[i]));
20+
}
21+
runBenchmark(suite);

src/big-o/o-logn.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import Benchmark = require('benchmark');
2+
import { generateArray, runBenchmark } from '../helpers';
3+
import binarySeach from '../binary-search/iterative';
4+
5+
let arrays = [
6+
generateArray(1000),
7+
generateArray(2000),
8+
generateArray(3000),
9+
generateArray(4000),
10+
generateArray(5000),
11+
generateArray(6000),
12+
generateArray(7000),
13+
generateArray(8000),
14+
generateArray(9000),
15+
generateArray(10000)
16+
];
17+
//O(log(2, n)
18+
const suite = new Benchmark.Suite('O(2, n) will perform logarithmically in proportion to the size of the data set:');
19+
for(let i = 0; i < arrays.length; i++) {
20+
let toFind = arrays[i][Math.round(arrays[i].length * 0.3)];
21+
suite.add(`${arrays[i].length}`, () => binarySeach(toFind, arrays[i]));
22+
}
23+
runBenchmark(suite);

src/big-o/o-n.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import { generateArray, runBenchmark } from '../helpers';
2+
let arrays = [
3+
generateArray(100),
4+
generateArray(200),
5+
generateArray(300),
6+
generateArray(400),
7+
generateArray(500),
8+
generateArray(600),
9+
generateArray(700),
10+
generateArray(800),
11+
generateArray(900),
12+
generateArray(1000)
13+
];
14+
//O(n)
15+
function search(numbers, toFind) {
16+
for (let i of numbers) {
17+
if (toFind === i) {
18+
return i;
19+
}
20+
}
21+
return -1;
22+
}
23+
const suite = new Benchmark.Suite('O(n) will perform linearly in proportion to the size of the data set:');
24+
for (let i = 0; i < arrays.length; i++) {
25+
suite.add(`${arrays[i].length}`, () => search(arrays[i], arrays[i][arrays[i].length - 1]));
26+
}
27+
runBenchmark(suite);

src/big-o/o-n.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import Benchmark = require('benchmark');
2+
import { generateArray, runBenchmark } from '../helpers';
3+
4+
let arrays = [
5+
generateArray(100),
6+
generateArray(200),
7+
generateArray(300),
8+
generateArray(400),
9+
generateArray(500),
10+
generateArray(600),
11+
generateArray(700),
12+
generateArray(800),
13+
generateArray(900),
14+
generateArray(1000)
15+
];
16+
//O(n)
17+
function search(numbers:Array<number>, toFind:number): number {
18+
for(let i of numbers) {
19+
if (toFind === i) {
20+
return i;
21+
}
22+
}
23+
return -1;
24+
}
25+
26+
const suite = new Benchmark.Suite('O(n) will perform linearly in proportion to the size of the data set:');
27+
for(let i = 0; i < arrays.length; i++) {
28+
suite.add(`${arrays[i].length}`, () => search(arrays[i], arrays[i][arrays[i].length-1]));
29+
}
30+
runBenchmark(suite);

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy