javascript-algorithms
Advanced tools
Comparing version 0.0.1 to 0.0.2
@@ -442,4 +442,4 @@ /* | ||
function bubbleSort(arr, callback) { | ||
for (var i = 0; i < arr.length - 2; i++) { | ||
for (var j = 0; j < arr.length - 1; j++) { | ||
for (var i = arr.length; i >= 2; --i) { | ||
for (var j = 0; j < i - 1; ++j) { | ||
if (callback(arr[j], arr[j + 1])) { | ||
@@ -453,6 +453,6 @@ this.swap(arr, j, j + 1); | ||
function selectionSorting(arr) { | ||
function selectionSorting(arr, callback) { | ||
for (var i = 0; i < arr.length - 1; i++) { | ||
for (var j = i + 1; j < arr.length; j++) { | ||
if (arr[i] > arr[j]) { | ||
if (callback(arr[i], arr[j])) { | ||
this.swap(arr, i, j); | ||
@@ -466,7 +466,7 @@ } | ||
function insertionSort(arr) { | ||
function insertionSort(arr, callback) { | ||
for (var i = 0; i < arr.length; i++) { | ||
var temp = arr[i]; | ||
var j = i; | ||
while (j > 0 && (arr[j - 1] > temp)) { | ||
while (j > 0 && callback(arr[j - 1], temp)) { | ||
arr[j] = arr[j - 1]; | ||
@@ -480,4 +480,4 @@ j = j - 1; | ||
function shellSort(arr) { | ||
var step = arr.length / 2; | ||
function shellSort(arr, callback) { | ||
var step = parseInt(arr.length / 2); | ||
@@ -487,3 +487,3 @@ while (step > 0) { | ||
var k = arr[i]; | ||
for (var j = i; j >= step && k < arr[j - step]; j -= step) { | ||
for (var j = i; j >= step && callback(k, arr[j - step]); j -= step) { | ||
arr[j] = arr[j - step]; | ||
@@ -499,6 +499,5 @@ } | ||
function mergeSort(arr) { | ||
function mergeSort(arr, callback) { | ||
var step = 1; | ||
var left, right; | ||
while (step < arr.length) { | ||
@@ -508,3 +507,3 @@ left = 0; | ||
while (right + step <= arr.length) { | ||
mergeArray(arr, left, left + step, right, right + step); | ||
mergeArray(arr, left, left + step, right, right + step, callback); | ||
left = right + step; | ||
@@ -514,3 +513,3 @@ right = left + step; | ||
if (right < arr.length) { | ||
mergeArray(arr, left, left + step, right, arr.length); | ||
mergeArray(arr, left, left + step, right, arr.length, callback); | ||
} | ||
@@ -520,12 +519,15 @@ step *= 2; | ||
function mergeArray(arr, startleft, stopleft, startright, stopright) { | ||
function mergeArray(arr, startleft, stopleft, startright, stopright, callback) { | ||
var leftArr = new Array(stopleft - startleft + 1); | ||
var rightArr = new Array(stopright - startright + 1); | ||
for (var i = 0; i < (leftArr.length); i++) { | ||
leftArr[i] = arr[startleft + i]; | ||
x = startleft; | ||
for (var i = 0; i < (leftArr.length - 1); ++i) { | ||
leftArr[i] = arr[x]; | ||
++x; | ||
} | ||
for (var i = 0; i < (rightArr.length) - 1; i++) { | ||
rightArr[i] = arr[startright + i]; | ||
x = startright; | ||
for (var i = 0; i < (rightArr.length - 1); ++i) { | ||
rightArr[i] = arr[x]; | ||
++x; | ||
} | ||
@@ -537,4 +539,10 @@ | ||
var n = 0; | ||
for (var k = startleft; k < stopright; k++) { | ||
if (leftArr[m] <= rightArr[n]) { | ||
var l; | ||
var r; | ||
for (var k = startleft; k < stopright; ++k) { | ||
//console.log(leftArr,rightArr[n],m,n); | ||
//l =( (leftArr[m] == Infinity) ? Infinity : callback(leftArr[m]) ); | ||
//r =( (rightArr[n] == Infinity) ? Infinity : callback(rightArr[n]) ); | ||
if (( (leftArr[m] == Infinity) ? Infinity : callback(leftArr[m]) ) | ||
<= ( (rightArr[n] == Infinity) ? Infinity : callback(rightArr[n]) )) { | ||
arr[k] = leftArr[m]; | ||
@@ -553,3 +561,4 @@ m++; | ||
function quickSort(arr) { | ||
function quickSort(arr, callback) { | ||
if (arr.length == 0) { | ||
@@ -562,3 +571,3 @@ return []; | ||
for (var i = 1; i < arr.length; i++) { | ||
if (arr[i] < pivot) { | ||
if (callback(arr[i], pivot)) { | ||
left.push(arr[i]); | ||
@@ -569,4 +578,5 @@ } else { | ||
} | ||
var x = quickSort(left, callback).concat(pivot, quickSort(right, callback)); | ||
return quickSort(left).concat(pivot, quickSort(right)); | ||
return x; | ||
} | ||
@@ -573,0 +583,0 @@ |
@@ -19,6 +19,7 @@ { | ||
"scripts": { | ||
"build": "uglifyjs js-algorithm.js --mangle --source-map js-algorithm.min.js.map -o js-algorithm.min.js", | ||
"test": "lab test" | ||
}, | ||
"main": "js-algorithm.js", | ||
"version": "0.0.1", | ||
"version": "0.0.2", | ||
"repository": { | ||
@@ -25,0 +26,0 @@ "type": "git", |
61983
15
1575