/
algorithms.js
89 lines (84 loc) · 3.01 KB
/
algorithms.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
var categories = {
sorting: {
name: "Sorting",
algorithms: {
insertionSort: {
name: "Insertion Sort",
description: "A simple sort algorithm, works like most people "
+ "sort cards on their hand."
},
mergeSort: {
name: "Merge Sort",
description: "A fast, recursive sort algorithm that divides "
+ "and merges the input."
},
bubbleSort: {
name: "Bubble Sort",
description: "An extremely simple sort algorithm with so "
+ "abysmal performance that this demonstration doesn't "
+ "show every step."
},
heapsort: {
name: "Heapsort",
description: "A well performing sort algorithm that uses a "
+ "binary heap."
},
quicksort: {
name: "Quicksort",
description: "A fast, recursive sort algorithm that partitions "
+ "the input.",
},
randomizedQuicksort: {
name: "Randomized Quicksort",
description: "A variant of "
+ "<a href=\"/quicksort\">Quicksort</a> that avoids the "
+ "worst case running time by partitioning around a random "
+ "pivot element."
}
}
},
dataStructures: {
name: "Data Structures",
algorithms: {
stack: {
name: "Stack",
description: "A simple data structure that stores elements as "
+ "on a physical stack: The first element inserted is the "
+ "last to be extracted (FILO)."
},
queue: {
name: "Queue",
description: "A simple data structure that stores elements as "
+ "on a physical queue: The first element inserted is the "
+ "first to be extracted (FIFO)."
},
linkedList: {
name: "Linked List",
description: "A data structure that stores a dynamic number of "
+ "elements."
}
}
}
};
function createAlgorithms() {
var algorithms = {};
Object.keys(categories).forEach(function (categoryKey) {
var category = categories[categoryKey];
Object.keys(category.algorithms).forEach(function(algorithmKey) {
var algorithm = category.algorithms[algorithmKey];
algorithm.category = categoryKey;
algorithms[algorithmKey] = algorithm;
});
});
Object.keys(algorithms).forEach(function (key) {
var value = algorithms[key];
value.file = key + ".js";
value.functionName = key;
value.url = "/" + key;
});
return algorithms;
}
module.exports = {
categories: categories,
algorithms: createAlgorithms()
};