成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

常見排序算法的JavaScript實現(xiàn)

icattlecoder / 3456人閱讀

摘要:原文譯文排序算法的實現(xiàn)譯者冒泡排序插入排序選擇排序歸并排序快速排序譯文出處

原文:Sorting Algorithms in Javascript

譯文:排序算法的JavaScript實現(xiàn)

譯者: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

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/85594.html

相關(guān)文章

  • JavaScript實現(xiàn)常見排序算法

    這里用JavaScript實現(xiàn)冒泡排序、選擇排序、插入排序、歸并排序以及快速排序這些常見的排序算法 首先我們給本文約定一個實現(xiàn)的框架:定義一個ArrayList類里面包含排序數(shù)組聲明、數(shù)組元素添加、排序算法實現(xiàn)以及數(shù)組輸出的方法。 代碼框架: function ArrayList(){ var array=[]; this.inputArrayme...

    keke 評論0 收藏0
  • JavaScript數(shù)據(jù)結(jié)構(gòu)和算法

    摘要:棧被稱為一種后入先出的數(shù)據(jù)結(jié)構(gòu)。散列使用的數(shù)據(jù)結(jié)構(gòu)叫做散列表。這些操作需要求助于其他數(shù)據(jù)結(jié)構(gòu),比如下面介紹的二叉查找樹。 前言 在過去的幾年中,得益于Node.js的興起,JavaScript越來越廣泛地用于服務(wù)器端編程。鑒于JavaScript語言已經(jīng)走出了瀏覽器,程序員發(fā)現(xiàn)他們需要更多傳統(tǒng)語言(比如C++和Java)提供的工具。這些工具包括傳統(tǒng)的數(shù)據(jù)結(jié)構(gòu)(如鏈表,棧,隊列,圖等),...

    EastWoodYang 評論0 收藏0
  • JavaScript算法 ,Python算法,Go算法,java算法,系列之歸并排序

    摘要:常見的內(nèi)部排序算法有插入排序希爾排序選擇排序冒泡排序歸并排序快速排序堆排序基數(shù)排序等。用一張圖概括歸并排序英語,或,是創(chuàng)建在歸并操作上的一種有效的排序算法,效率為。 常見的內(nèi)部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數(shù)排序等。用一張圖概括: showImg(https://segmentfault.com/img/bVNwuO?w=966&h=...

    zhou_you 評論0 收藏0
  • JavaScript算法 ,Python算法,Go算法,java算法,系列之歸并排序

    摘要:常見的內(nèi)部排序算法有插入排序希爾排序選擇排序冒泡排序歸并排序快速排序堆排序基數(shù)排序等。用一張圖概括歸并排序英語,或,是創(chuàng)建在歸并操作上的一種有效的排序算法,效率為。 常見的內(nèi)部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數(shù)排序等。用一張圖概括: showImg(https://segmentfault.com/img/bVNwuO?w=966&h=...

    caoym 評論0 收藏0
  • JavaScript算法 ,Python算法,Go算法,java算法,系列之歸并排序

    摘要:常見的內(nèi)部排序算法有插入排序希爾排序選擇排序冒泡排序歸并排序快速排序堆排序基數(shù)排序等。用一張圖概括歸并排序英語,或,是創(chuàng)建在歸并操作上的一種有效的排序算法,效率為。 常見的內(nèi)部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數(shù)排序等。用一張圖概括: showImg(https://segmentfault.com/img/bVNwuO?w=966&h=...

    microcosm1994 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<