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)