资讯专栏INFORMATION COLUMN

常见排序算法的JavaScript实现

icattlecoder / 3451人阅读

摘要:原文译文排序算法的实现译者冒泡排序插入排序选择排序归并排序快速排序译文出处

原文:Sorting Algorithms in Javascript

译文:排序算法的JavaScript实现

译者:dwqs

冒泡排序
let compare = (n1, n2) => n1 - n2;

let bubbleSort = (arr, cmp = compare) => {
  for (let i = 0; i < arr.length; i++) {
    for (let j = i; j > 0; j--) {
      if (cmp(arr[j], arr[j - 1]) < 0) {
        [arr[j], arr[j - 1]] = [arr[j - 1], arr[j]];
      }
    }
  }
  return arr;
};
插入排序
let insertionSort = (arr) => {
    for (let i = 0; i < a.length; i++) {
        let toCmp = arr[i];
        for (let j = i; j > 0 && toCmp < a[j - 1]; j--)
            arr[j] = a[j - 1];
        arr[j] = toCmp;
    }
    return arr;
}
选择排序
var selectionSort = function (arr) {
  let i,m,j;
  for (i = -1; ++i < a.length;) {
    for (m = j = i; ++j < a.length;) {
      if (arr[m] > arr[j]) m = j;
    }
    [arr[m], arr[i]] = [arr[i], arr[m]];
 }
 return arr;
}
归并排序
let mergeSort = (arr) => {

  if (arr.length < 2) return arr;

  let middle = parseInt(arr.length / 2),
  left = arr.slice(0, middle),
  right = arr.slice(middle);

  return merge(mergeSort(left), mergeSort(right));
}

let merge = (left, right) => {
  let result = [];

  while (left.length && right.length) {
    left[0] <= right[0] ?
    result.push(left.shift()) :
    result.push(right.shift());
  }

  while (left.length) result.push(left.shift());
  while (right.length) result.push(right.shift());

  return result;
}
快速排序
let quicksort = function(arr) {
  if(arr.length <= 1) return arr;

  let pivot = Math.floor((arr.length -1)/2);
  let val = arr[pivot], less = [], more = [];

  arr.splice(pivot, 1);
  arr.forEach(function(e,i,a){
    e < val ? less.push(e) : more.push(e);
  });

  return (quicksort(less)).concat([val],quicksort(more))
}

译文出处:http://www.ido321.com/1492.html

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/85594.html

相关文章

  • JavaScript实现常见排序算法

    这里用JavaScript实现冒泡排序、选择排序、插入排序、归并排序以及快速排序这些常见的排序算法 首先我们给本文约定一个实现的框架:定义一个ArrayList类里面包含排序数组声明、数组元素添加、排序算法实现以及数组输出的方法。 代码框架: function ArrayList(){ var array=[]; this.inputArrayme...

    keke 评论0 收藏0
  • JavaScript数据结构和算法

    摘要:栈被称为一种后入先出的数据结构。散列使用的数据结构叫做散列表。这些操作需要求助于其他数据结构,比如下面介绍的二叉查找树。 前言 在过去的几年中,得益于Node.js的兴起,JavaScript越来越广泛地用于服务器端编程。鉴于JavaScript语言已经走出了浏览器,程序员发现他们需要更多传统语言(比如C++和Java)提供的工具。这些工具包括传统的数据结构(如链表,栈,队列,图等),...

    EastWoodYang 评论0 收藏0
  • JavaScript算法 ,Python算法,Go算法,java算法,系列之归并排序

    摘要:常见的内部排序算法有插入排序希尔排序选择排序冒泡排序归并排序快速排序堆排序基数排序等。用一张图概括归并排序英语,或,是创建在归并操作上的一种有效的排序算法,效率为。 常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括: showImg(https://segmentfault.com/img/bVNwuO?w=966&h=...

    zhou_you 评论0 收藏0
  • JavaScript算法 ,Python算法,Go算法,java算法,系列之归并排序

    摘要:常见的内部排序算法有插入排序希尔排序选择排序冒泡排序归并排序快速排序堆排序基数排序等。用一张图概括归并排序英语,或,是创建在归并操作上的一种有效的排序算法,效率为。 常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括: showImg(https://segmentfault.com/img/bVNwuO?w=966&h=...

    caoym 评论0 收藏0
  • JavaScript算法 ,Python算法,Go算法,java算法,系列之归并排序

    摘要:常见的内部排序算法有插入排序希尔排序选择排序冒泡排序归并排序快速排序堆排序基数排序等。用一张图概括归并排序英语,或,是创建在归并操作上的一种有效的排序算法,效率为。 常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括: showImg(https://segmentfault.com/img/bVNwuO?w=966&h=...

    microcosm1994 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<