js+排序

快排

const quicksort = (arr) => {
  if(arr.length <= 1) return arr
  let pivot = arr[0]
  let left = arr.slice(1).filter((ele) => ele < pivot)
  let right = arr.slice(1).filter((ele) => ele > pivot)
  return quicksort(left).concat([pivot]).concat(quicksort(right))
}

歸并排序

const mergesort = (arr) => {
  if (arr.length <= 1) return arr
  let left = mergesort(arr.slice(0,arr.length / 2))
  let right = mergesort(arr.slice(arr.length/2))
  return merge(left, right)
}

const merge = (left, right) => {
  let res = []
  while (left.length != 0 && right.length != 0){
    if (left[0] < right[0]){
      res.push(left.shift())
    }else{
      res.push(right.shift())
    }
  }
  if(left.length > 0) res = res.concat(left)
  if(right.length > 0) res = res.concat(right)
  return res
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 十大經典算法排序總結對比一張圖概括,主流排序算法概覽: 名詞解釋:n: 數據規模k:“桶”的個數In-place:...
    飛菲fly閱讀 651評論 0 2
  • 之前寫過js實現數組去重, 今天繼續研究數組: 排序算法實現。 排序是數據結構主要內容,并不限于語言主要在于思想;...
    蕭強閱讀 11,505評論 3 50
  • 1.排序 冒泡 選擇 插入 歸并 快遞 2.冒泡排序(升序排序)面試要用 var arr = [10,2,...
    壬萬er閱讀 714評論 0 0
  • 一些常用js排序算法實現,非原創,用于記錄 冒泡排序 時間復雜度:O(n^2);最快:數據是正序時最慢:數據是反序...
    bestvist閱讀 496評論 1 9
  • 「第一天」在,不在 冬天,火車的夜晚有點冷,好在越往南方,陽光也愈加明媚起來,走出火車站的一瞬間,突然涌起的念頭,...
    貓生默默閱讀 279評論 0 0