SOURCE

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;
}

// console.log(bubbleSort([2, 1, 4,3]))

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;
}
// console.log(selectSort([2,1, 4,3]))


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;
}

// console.log(insertSort([1, 4, 3,2, 5]))

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;
}

// console.log(mergeSort([2, 1, 4, 6, 5, 3]))

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;
}


// console.log(fastSort([2, 5, 3, 1, 6, 4]))


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.log(binarySearch([2, 5,1, 4, 6, 3], 1))































































console 命令行工具 X clear

                    
>
console