function bubbleSort(array) {
for (var i = 0; i< array.length - 1; i++) {
for (var j = 0; j < array.length - 1 - i; j++) {
if (array[j] > array[j + 1]) {
swap(array, j, j+ 1);
}
}
}
return array;
}
function swap(array, i, j) {
var temp = array[i];
array[i] = array[j];
array[j] = temp;
}
function selectSort(array) {
for (var i = 0; i < array.length - 1; i++) {
var minIndex = i;
for (var j = i; j < array.length; j++) {
if (array[j] < array[minIndex]) {
minIndex = j;
}
}
if (minIndex !== i) {
swap(array, i, minIndex);
}
}
return array;
}
function insertSort(array) {
var j;
var temp;
for (var i = 1; i < array.length; i++) {
j = i;
temp = array[i];
while (array[j - 1] > temp && j > 0) {
array[j] = array[j - 1];
j--;
}
array[j] = temp;
}
return array;
}
function mergeSort(array) {
if (array.length === 1) {
return array;
}
var middle = array.length / 2 >> 0;
var leftArray = array.slice(0, middle);
var rightArray = array.slice(middle);
return merge(mergeSort(leftArray), mergeSort(rightArray));
}
function merge(leftArray, rightArray) {
var leftIndex = 0;
var rightIndex = 0;
var lLength = leftArray.length;
var rLength = rightArray.length;
var result = [];
while (leftIndex < lLength && rightIndex < rLength) {
if (leftArray[leftIndex] < rightArray[rightIndex]) {
result.push(leftArray[leftIndex++]);
} else {
result.push(rightArray[rightIndex++]);
}
}
while (leftIndex < lLength) {
result.push(leftArray[leftIndex++]);
}
while (rightIndex < rLength) {
result.push(rightArray[rightIndex++]);
}
return result;
}
function fastSort(array) {
sort(array, 0, array.length - 1);
return array;
}
function sort(array, left, right) {
if (left > right) {
return;
}
var storeIndex = partition(array, left, right);
sort(array, left, storeIndex - 1);
sort(array, storeIndex + 1, right);
}
function partition(array, left, right) {
var storeIndex = left;
var pivot = array[right];
for (var i = left; i < right; i++) {
if (array[i] < pivot) {
swap(array, i, storeIndex);
storeIndex++;
}
}
swap(array, storeIndex, right);
return storeIndex;
}
function binarySearch(array, item) {
array = fastSort(array);
console.log(array);
var low = 0;
var high = array.length - 1;
var middle;
var element;
while (low <= high) {
middle = (low + high) / 2 >> 0;
element = array[middle];
if (element < item) {
low = middle + 1;
} else if (element > item) {
high = middle - 1;
} else {
return middle;
}
}
return -1;
}
console