疾速排序

'use strict';const quickSort = function (array, low, high) {  if (low >= high) {    return;  }  let i = low;  let j = high;  const tmp = array[i];  while (i < j) {    while (i < j && array[j] >= tmp) {      j--;    }    if (i < j) {      array[i++] = array[j];    }    while (i < j && array[i] <= tmp) {      i++;    }    if (i < j) {      array[j--] = array[i];    }  }  array[i] = tmp;  quickSort(array, low, i - 1);  quickSort(array, i + 1, high);}const arr = [1, 23, 7, 123, 45, 78, 10];console.log(arr);quickSort(arr, 0, arr.length - 1);console.log(arr);

归并排序

'use strict';// 两个有序数组合并const memeryArray = function (arr1, arr2) {  const c = [];  let i = 0;  let j = 0;  let k = 0;  while (i < arr1.length && j < arr2.length) {    if (arr1[i] < arr2[j]) c[k++] = arr1[i++];    else c[k++] = arr2[j++];  }  while (i < arr1.length) c[k++] = arr1[i++];  while (j < arr2.length) c[k++] = arr2[j++];  return c;}// 将同一数组,两段有序序列合并const memery = function (arr, first, mid, last) {  const temp = [];  let i = first;  const j = mid;  let m = mid + 1;  const n = last;  let k = 0;  while (i <= j && m <= n) {    if (arr[i] < arr [m]) temp[k++] = arr[i++];    else temp[k++] = arr[m++];  }  while (i <= j) temp[k++] = arr[i++];  while (m <= n) temp[k++] = arr[m++];  for (i = 0; i < k; i++) arr[first + i] = temp[i];}const mergeSort = function (arr, first, last) {  if (!Array.isArray(arr)) throw new Error('argument is not a array');  if (first < last) {    const mid = parseInt((first + last) / 2, 10);    mergeSort(arr, first, mid);    mergeSort(arr, mid + 1, last);    memery(arr, first, mid, last);  }};const arr1 = [1, 7, 13, 20, 6, 9, 10, 10, 11, 26, 29];console.log(arr1);mergeSort(arr1, 0, arr1.length - 1);console.log(arr1);