排序演算法的JavaScript實現,排序演算法javascript

來源:互聯網
上載者:User

排序演算法的JavaScript實現,排序演算法javascript

冒泡排序

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.