美文网首页
js算法之排序

js算法之排序

作者: summer_味道制造 | 来源:发表于2018-03-05 11:52 被阅读0次

快速排序

const quickSort: <T>(arr: Array<T>) => Array<T> = <T>(arr: Array<T>): Array<T> => {
  const len: number = arr.length;
  if (len <= 1) {
    return arr;
  }
  const index: number = Math.floor(len / 2);
  const element: T = arr.splice(index, 1)[0];
  let i: number;
  const arrLeft: Array<T> = [];
  const arrRight: Array<T> = [];
  for (i = 0; i < len; i++) {
    if (arr[i] < element) {
      arrLeft.push(arr[i])
    } else {
      arrRight.push(arr[i])
    }
  }
  return [...quickSort(arrLeft), element, ...quickSort(arrRight)];
}

冒泡排序

const bubbleSort: <T>(arr: Array<T>) => Array<T> = <T>(arr: Array<T>): Array<T> => {
  const len: number = arr.length;
  if (len >= 1) {
    return arr;
  }
  let i: number;
  let j: number;
  for (let i = 0; i < len; i++) {
    for (let j = 0; j < len - 1 - i; j++) {
      if (arr[j] > arr[j + 1]) {
        const temp: T = arr[j + 1];
        arr[j + 1] = arr[j];
        arr[j] = temp;
      }
    }
  }
  return arr;
}

归并排序

const merge: <T>(left: Array<T>, right: Array<T>) => Array<T> = <T>(left: Array<T>, right: Array<T>): Array<T> => {
  const temp: Array<T> = [];
  const leftLen: number = left.length;
  const rightLen: number = right.length;
  while (leftLen > 0 && rightLen > 0) {
    if (left[0] < right[0]) {
      temp.push(left.shift())
    } else {
      temp.push(right.shift())
    }
  }
  return [...temp, ...left, ...right];
}
const mergeSort: <T>(arr: Array<T>) => Array<T> = <T>(arr: Array<T>): Array<T> => {
  const len: number = arr.length;
  if (len === 1) {
    return arr;
  }
  const index: number = Math.floor(len / 2);
  const left: Array<T> = arr.splice(0, index);
  const right: Array<T> = arr.splice(index);

  return merge<T>(mergeSort<T>(left), mergeSort<T>(right));
}

相关文章

  • 经典排序算法总结

    经典排序算法集锦 冒泡法 排序算法入门之冒泡排序 排序算法入门之冒泡排序优化

  • 排序算法

    JS里排序算法的写法:

  • js算法之排序

    快速排序 冒泡排序 归并排序

  • 七大排序算法之冒泡排序

    七大排序算法之冒泡排序 @(算法笔记)[排序算法, 冒泡排序, C++实现] 冒泡排序介绍 冒泡排序是七大排序算法...

  • js 排序算法之快速排序

    快速排序是一种划分交换排序。它采用了一种分治的策略,通常称其为分治法。 分治法的基本思想是:将原问题分解为若干个规...

  • 七大排序算法之快速排序

    七大排序算法之快速排序 @(算法笔记)[排序算法, 快速排序, C++实现] [TOC] 快速排序的介绍: 快速排...

  • 2018-06-30

    排序算法之归并排序 归并排序算法是排序算法中的经典算法之一,其核心思想是利用归并的思想实现的排序方法,该算法采用经...

  • js算法之选择排序

    选择排序: 两个for循环嵌套,外循环记录每次循环开始的位置,内循环查找本次循环内的最小值; 实质是每循环一次...

  • js算法之冒泡排序

    冒泡排序代码: var Array=[8,94,15,88,55,76,21,39]; function sort...

  • JS之排序算法说明

    对于评述算法优劣术语的说明 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面; 不稳定:如果a原本在b...

网友评论

      本文标题:js算法之排序

      本文链接:https://www.haomeiwen.com/subject/rmsqfftx.html