Skip to content

Commit 7b5bc47

Browse files
committedAug 29, 2014
added chapter 11
1 parent e014ac6 commit 7b5bc47

5 files changed

+134
-0
lines changed
 

‎chapter11/02-MinCoinChangeDP.html

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<meta charset="UTF-8">
5+
<title></title>
6+
</head>
7+
<body>
8+
<script type="text/javascript" src="02-MinCoinChangeDP.js"></script>
9+
</body>
10+
</html>

‎chapter11/02-MinCoinChangeDP.js

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
function MinCoinChange(coins){
2+
3+
var coins = coins;
4+
5+
var cache = {};
6+
7+
this.makeChange = function(amount) {
8+
var me = this;
9+
if (!amount) {
10+
return [];
11+
}
12+
if (cache[amount]) {
13+
return cache[amount];
14+
}
15+
var min = [], newMin, newAmount;
16+
for (var i=0; i<coins.length; i++){
17+
var coin = coins[i];
18+
newAmount = amount - coin;
19+
if (newAmount >= 0){
20+
newMin = me.makeChange(newAmount);
21+
}
22+
if (
23+
newAmount >= 0 &&
24+
(newMin.length < min.length-1 || !min.length) &&
25+
(newMin.length || !newAmount)
26+
){
27+
min = [coin].concat(newMin);
28+
console.log('new Min ' + min + ' for ' + amount);
29+
}
30+
}
31+
return (cache[amount] = min);
32+
};
33+
}
34+
35+
36+
var minCoinChange = new MinCoinChange([1, 5, 10, 25]);
37+
38+
console.log(minCoinChange.makeChange(37));

‎chapter11/BigONotation.html

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<meta charset="UTF-8">
5+
<title></title>
6+
</head>
7+
<body>
8+
<script type="text/javascript" src="BigONotation.js"></script>
9+
</body>
10+
</html>

‎chapter11/BigONotation.js

+65
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
//*************** o(1)
2+
function increment(num){
3+
console.log('cost for increment with input ' + num + ' is 1');
4+
return ++num;
5+
}
6+
7+
increment(1);
8+
increment(2);
9+
10+
//*************** o(n)
11+
12+
function createNonSortedArray(size){
13+
var array = []
14+
15+
for (var i = size; i> 0; i--){
16+
array[i] = i;
17+
}
18+
19+
return array;
20+
}
21+
22+
function sequentialSearch(array, item){
23+
var cost = 0;
24+
for (var i=0; i<array.length; i++){
25+
cost++;
26+
if (item === array[i]){ //{1}
27+
return i;
28+
}
29+
}
30+
console.log('cost for sequentialSearch with input size ' + array.length + ' is ' + cost);
31+
return -1;
32+
}
33+
34+
var array = createNonSortedArray(99);
35+
sequentialSearch(array, -1);
36+
37+
//*************** o(nˆ2)
38+
39+
function swap(array, index1, index2){
40+
var aux = array[index1];
41+
array[index1] = array[index2];
42+
array[index2] = aux;
43+
}
44+
45+
function bubbleSort(array){
46+
var length = array.length;
47+
var cost = 0;
48+
for (var i=0; i<length; i++){ //{1}
49+
cost++;
50+
for (var j=0; j<length-1; j++ ){ //{2}
51+
cost++;
52+
if (array[j] > array[j+1]){
53+
swap(array, j, j+1);
54+
}
55+
}
56+
}
57+
console.log('cost for bubbleSort with input size ' + length + ' is ' + cost);
58+
}
59+
60+
var array1 = createNonSortedArray(99);
61+
var array2 = createNonSortedArray(999);
62+
var array3 = createNonSortedArray(9999);
63+
bubbleSort(array1);
64+
bubbleSort(array2);
65+
bubbleSort(array3);

‎chapter11/MinCoinChangeGreedy.js

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
var makeChange = function(amount) {
2+
var change = [],
3+
total = 0;
4+
[25, 10, 5, 1].forEach(function(coin) {
5+
while (total + coin <= amount) {
6+
change.push(coin);
7+
total += coin;
8+
}
9+
});
10+
return change;
11+
};

0 commit comments

Comments
 (0)