From 8265219139055d9f3a181ca2a6ac343d52fb399d Mon Sep 17 00:00:00 2001 From: Renata Estes Date: Tue, 1 Aug 2017 20:41:43 -0500 Subject: [PATCH 1/8] algorithms --- 04week/algorithms.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/04week/algorithms.js b/04week/algorithms.js index 5759b960e..fc79005ed 100644 --- a/04week/algorithms.js +++ b/04week/algorithms.js @@ -8,14 +8,21 @@ function getRandomInt(min, max) { return Math.floor(Math.random() * (max - min)) + min; } -let arr = []; +let arr = [56, 4, 5, 1, 123, 9]; for (let i = 0; i < 1000; i++) { arr.push(getRandomInt(0, 1000)); } function bubbleSort(arr) { - // Your code here +for (i=0; i< arr.length; i++){ + if (arr[i] > arr[i + 1]) { + let temp = arr[i] + arr[i] = arr[i+1]; + arr[i+1] = temp; + } +} +bubbleSort(arr); } function mergeSort(arr) { From f73246d074911b0d3addae8a5cf8e0211090bf63 Mon Sep 17 00:00:00 2001 From: Renata Estes Date: Tue, 1 Aug 2017 20:51:12 -0500 Subject: [PATCH 2/8] commit1 --- 04week/algorithms.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/04week/algorithms.js b/04week/algorithms.js index fc79005ed..479fc6594 100644 --- a/04week/algorithms.js +++ b/04week/algorithms.js @@ -21,9 +21,10 @@ for (i=0; i< arr.length; i++){ arr[i] = arr[i+1]; arr[i+1] = temp; } + } } bubbleSort(arr); -} + function mergeSort(arr) { // Your code here From ca1daa02454db7cda6bb6a334d6f4868595574b7 Mon Sep 17 00:00:00 2001 From: Renata Estes Date: Wed, 2 Aug 2017 15:47:30 -0500 Subject: [PATCH 3/8] commit --- 04week/algorithms.js | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/04week/algorithms.js b/04week/algorithms.js index 479fc6594..93663d875 100644 --- a/04week/algorithms.js +++ b/04week/algorithms.js @@ -15,6 +15,7 @@ for (let i = 0; i < 1000; i++) { } function bubbleSort(arr) { +var len = arr.length; for (i=0; i< arr.length; i++){ if (arr[i] > arr[i + 1]) { let temp = arr[i] @@ -27,7 +28,28 @@ bubbleSort(arr); function mergeSort(arr) { - // Your code here + if(array.length < 2) { + return array; + } + + var middle = Math.floor(array.length / 2); + var left = array.slice(0, middle); + var right = array.slice(middle); + + return mergeTopDown(mergeSortTopDown(left), mergeSortTopDown(right)); + } + function mergeTopDown(left, right) { + var array = []; + + while(left.length && right.length) { + if(left[0] < right[0]) { + array.push(left.shift()); + } else { + array.push(right.shift()); + } + } + return array.concat(left.slice()).concat(right.slice()); + } } function binarySearch(arr, item) { From 784325a267fc7b49d400b696e163ffc534643826 Mon Sep 17 00:00:00 2001 From: Renata Estes Date: Wed, 2 Aug 2017 16:49:16 -0500 Subject: [PATCH 4/8] commit --- 04week/algorithms.js | 48 +++++++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/04week/algorithms.js b/04week/algorithms.js index 93663d875..4f644a4d6 100644 --- a/04week/algorithms.js +++ b/04week/algorithms.js @@ -8,39 +8,40 @@ function getRandomInt(min, max) { return Math.floor(Math.random() * (max - min)) + min; } -let arr = [56, 4, 5, 1, 123, 9]; +let arr = []; +const len = arr.length; for (let i = 0; i < 1000; i++) { arr.push(getRandomInt(0, 1000)); } -function bubbleSort(arr) { -var len = arr.length; -for (i=0; i< arr.length; i++){ - if (arr[i] > arr[i + 1]) { - let temp = arr[i] - arr[i] = arr[i+1]; - arr[i+1] = temp; - } - } +function bubbleSort(arr){ + for (var i = len-1; i>=0; i--){ + for(var j = 1; j<=i; j++){ + if(arr[j-1]>arr[j]){ + var temp = arr[j-1]; + arr[j-1] = arr[j]; + arr[j] = temp; + } + } + } + return arr; } -bubbleSort(arr); +console.log(bubbleSort(arr)); function mergeSort(arr) { - if(array.length < 2) { - return array; - } - - var middle = Math.floor(array.length / 2); - var left = array.slice(0, middle); - var right = array.slice(middle); - - return mergeTopDown(mergeSortTopDown(left), mergeSortTopDown(right)); - } - function mergeTopDown(left, right) { - var array = []; + if(len <2) { + return arr; +} + const mid = Math.floor(len/2), + left = arr.slice(0,mid), + right =arr.slice(mid); + return merge(mergeSort(left),mergeSort(right)); +} +console.log(mergeSort(arr); +function mergeTopDown(left, right) { while(left.length && right.length) { if(left[0] < right[0]) { array.push(left.shift()); @@ -52,6 +53,7 @@ function mergeSort(arr) { } } + function binarySearch(arr, item) { // Your code here } From b69c6585784bee242e180d2a37d0cb8c5c53b3b5 Mon Sep 17 00:00:00 2001 From: Renata Estes Date: Wed, 2 Aug 2017 17:53:47 -0500 Subject: [PATCH 5/8] commit --- 04week/algorithms.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/04week/algorithms.js b/04week/algorithms.js index 4f644a4d6..205a27f54 100644 --- a/04week/algorithms.js +++ b/04week/algorithms.js @@ -39,10 +39,10 @@ function mergeSort(arr) { right =arr.slice(mid); return merge(mergeSort(left),mergeSort(right)); } -console.log(mergeSort(arr); +console.log(mergeSort(arr)); -function mergeTopDown(left, right) { - while(left.length && right.length) { +function mergeBothSides(left, right) { + while(left.len && right.len) { if(left[0] < right[0]) { array.push(left.shift()); } else { @@ -52,7 +52,7 @@ function mergeTopDown(left, right) { return array.concat(left.slice()).concat(right.slice()); } } - +console.log(mergeBothSides()); function binarySearch(arr, item) { // Your code here From 786411f1bae772be1ffb1ccda8b9d81ef4fae531 Mon Sep 17 00:00:00 2001 From: Renata Estes Date: Wed, 2 Aug 2017 20:45:54 -0500 Subject: [PATCH 6/8] commit --- 04week/algorithms.js | 56 +++++++++++++++++++++++++++++++++----------- 1 file changed, 42 insertions(+), 14 deletions(-) diff --git a/04week/algorithms.js b/04week/algorithms.js index 205a27f54..ec609aa20 100644 --- a/04week/algorithms.js +++ b/04week/algorithms.js @@ -16,6 +16,7 @@ for (let i = 0; i < 1000; i++) { } function bubbleSort(arr){ + var len = arr.length; for (var i = len-1; i>=0; i--){ for(var j = 1; j<=i; j++){ if(arr[j-1]>arr[j]){ @@ -31,32 +32,59 @@ console.log(bubbleSort(arr)); function mergeSort(arr) { + const len = arr.length; if(len <2) { return arr; } - const mid = Math.floor(len/2), - left = arr.slice(0,mid), - right =arr.slice(mid); - return merge(mergeSort(left),mergeSort(right)); + +let arr = [4, 10, 53, 6, 88, 27, 1, 96] +const len = arr.length; +const mid = Math.floor(len/2); +const left = arr.slice(0,mid); +const right =arr.slice(mid, len); + +function mergeSort(arr) { + if(len <=1) { + return arr; +} + //return mergeSort(left, right); } console.log(mergeSort(arr)); function mergeBothSides(left, right) { - while(left.len && right.len) { + //while(left.len && right.len) { if(left[0] < right[0]) { - array.push(left.shift()); + arr.push(left.shift()); } else { - array.push(right.shift()); + arr.push(right.shift()); } - } - return array.concat(left.slice()).concat(right.slice()); + //} + return arr.concat(left.slice()).concat(right.slice()); } +console.log(mergeBothSides(left, right)); + + +//https://www.nczonline.net/blog/2009/09/01/computer-science-in-javascript-binary-search/ +//If middle equals value, you’re done. +//If value is less than middle, go left. +//If value is greater than middle, go right. +//defintely do not continue if value doesnt exist (happens when start and last indexes are equal) +function binarySearch(value){ + const firstIndex = 0, + const lastIndex = arr.length - 1, + const middle = Math.floor((firstIndex + lastIndex)/2); + + while(middle != value && firstIndex < lastIndex){ + if (value < middle){ + lastIndex = middle - 1; + } else if (value > middle){ + firstIndex = middle + 1; + } + middle = Math.floor((firstIndex + lastIndex)/2); + } + return (middle != value && firstIndex = lastIndex); } -console.log(mergeBothSides()); - -function binarySearch(arr, item) { - // Your code here -} +binarySearch(8); // Tests From ced61fe95fef3725e276d3fdff6f8ae456017af6 Mon Sep 17 00:00:00 2001 From: Renata Estes Date: Wed, 2 Aug 2017 23:45:35 -0500 Subject: [PATCH 7/8] commit --- 04week/algorithms.js | 133 ++++++++++++++++++++++++------------------- 04week/test.html | 36 ++++++++++++ 2 files changed, 109 insertions(+), 60 deletions(-) create mode 100644 04week/test.html diff --git a/04week/algorithms.js b/04week/algorithms.js index ec609aa20..4bae98cdc 100644 --- a/04week/algorithms.js +++ b/04week/algorithms.js @@ -11,80 +11,93 @@ function getRandomInt(min, max) { let arr = []; const len = arr.length; -for (let i = 0; i < 1000; i++) { +for (let i = 0; i < 10; i++) { arr.push(getRandomInt(0, 1000)); } -function bubbleSort(arr){ - var len = arr.length; - for (var i = len-1; i>=0; i--){ - for(var j = 1; j<=i; j++){ - if(arr[j-1]>arr[j]){ - var temp = arr[j-1]; - arr[j-1] = arr[j]; - arr[j] = temp; - } - } - } - return arr; +function getRandomInt(min, max) { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min)) + min; } -console.log(bubbleSort(arr)); - +let arr = []; +const len = arr.length; -function mergeSort(arr) { - const len = arr.length; - if(len <2) { - return arr; +for (let i = 0; i < 10; i++) { + arr.push(getRandomInt(0, 1000)); } -let arr = [4, 10, 53, 6, 88, 27, 1, 96] -const len = arr.length; -const mid = Math.floor(len/2); -const left = arr.slice(0,mid); -const right =arr.slice(mid, len); +function bubbleSort(arr){ + let len = arr.length; + for (let i = len-1; i>=0; i--){ + for(let j = 1; j<=i; j++){ + if(arr[j-1]>arr[j]){ + var temp = arr[j-1]; + arr[j-1] = arr[j]; + arr[j] = temp; + } + } + } + return arr; +} +console.log(bubbleSort(arr)); -function mergeSort(arr) { - if(len <=1) { - return arr; +function mergeSort(arr){ + var len = arr.length; + if(len <2) + return arr; + var mid = Math.floor(len/2), + left = arr.slice(0,mid), + right =arr.slice(mid); + //send left and right to the mergeSort to broke it down into pieces + //then merge those + return merge(mergeSort(left),mergeSort(right)); } - //return mergeSort(left, right); + +function merge(left, right){ + var result = [], + lLen = left.length, + rLen = right.length, + l = 0, + r = 0; + while(l < lLen && r < rLen){ + if(left[l] < right[r]){ + result.push(left[l]); + l++; + } + else{ + result.push(right[r]); + r++; + } + } + return result.concat(left.slice(l)).concat(right.slice(r)); } + console.log(mergeSort(arr)); -function mergeBothSides(left, right) { - //while(left.len && right.len) { - if(left[0] < right[0]) { - arr.push(left.shift()); - } else { - arr.push(right.shift()); - } - //} - return arr.concat(left.slice()).concat(right.slice()); - } -console.log(mergeBothSides(left, right)); - - -//https://www.nczonline.net/blog/2009/09/01/computer-science-in-javascript-binary-search/ -//If middle equals value, you’re done. -//If value is less than middle, go left. -//If value is greater than middle, go right. -//defintely do not continue if value doesnt exist (happens when start and last indexes are equal) -function binarySearch(value){ - const firstIndex = 0, - const lastIndex = arr.length - 1, - const middle = Math.floor((firstIndex + lastIndex)/2); - - while(middle != value && firstIndex < lastIndex){ - if (value < middle){ - lastIndex = middle - 1; - } else if (value > middle){ - firstIndex = middle + 1; - } - middle = Math.floor((firstIndex + lastIndex)/2); +let arrSorted = mergeSort(arr); + +function binarySearch(arr, value){ + let firstIndex = 0; + let lastIndex = arr.length - 1; + let middle = Math.floor((firstIndex + lastIndex)/2); + + while(arr[middle] != value && firstIndex < lastIndex){ + if (value < arr[middle]){ + lastIndex = middle - 1; + } else if (value > arr[middle]){ + firstIndex = middle + 1; } - return (middle != value && firstIndex = lastIndex); + middle = Math.floor((firstIndex + lastIndex)/2); + } + if (arr[middle] != value) { + return false; + } else { + return true; + } } -binarySearch(8); +console.log(arrSorted); +console.log(binarySearch(arrSorted, 4)); // Tests diff --git a/04week/test.html b/04week/test.html new file mode 100644 index 000000000..72fc9d13d --- /dev/null +++ b/04week/test.html @@ -0,0 +1,36 @@ + + + From b2c6e9da0c24a5a39889be048fd7d85bccaeb4cf Mon Sep 17 00:00:00 2001 From: Renata Estes Date: Wed, 2 Aug 2017 23:53:06 -0500 Subject: [PATCH 8/8] commit --- 04week/algorithms.js | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/04week/algorithms.js b/04week/algorithms.js index 4bae98cdc..01ab0d986 100644 --- a/04week/algorithms.js +++ b/04week/algorithms.js @@ -13,19 +13,7 @@ const len = arr.length; for (let i = 0; i < 10; i++) { arr.push(getRandomInt(0, 1000)); -} - -function getRandomInt(min, max) { - min = Math.ceil(min); - max = Math.floor(max); - return Math.floor(Math.random() * (max - min)) + min; -} -let arr = []; -const len = arr.length; - -for (let i = 0; i < 10; i++) { - arr.push(getRandomInt(0, 1000)); -} +}; function bubbleSort(arr){ let len = arr.length; @@ -45,10 +33,10 @@ console.log(bubbleSort(arr)); function mergeSort(arr){ var len = arr.length; if(len <2) - return arr; + return arr; var mid = Math.floor(len/2), - left = arr.slice(0,mid), - right =arr.slice(mid); + left = arr.slice(0,mid), + right =arr.slice(mid); //send left and right to the mergeSort to broke it down into pieces //then merge those return merge(mergeSort(left),mergeSort(right)); @@ -56,10 +44,10 @@ function mergeSort(arr){ function merge(left, right){ var result = [], - lLen = left.length, - rLen = right.length, - l = 0, - r = 0; + lLen = left.length, + rLen = right.length, + l = 0, + r = 0; while(l < lLen && r < rLen){ if(left[l] < right[r]){ result.push(left[l]);