资讯专栏INFORMATION COLUMN

js实现多种排序算法(算法导论第二章)

hankkin / 2867人阅读

插入排序:

var a = [1,7,4,2,17,13,9]

function insertionSort(arr){

   arr.map((d,index)=>{
       let i = index
       while(d0){
           [arr[i-1],arr[i]]=[arr[i],arr[i-1]]
           i--
       }
   })

}
insertionSort(a)

归并排序(非hack)

function merge (arr,l,m,r){

   var left = []
   var right = []
   for (let i =l;i

}
function mergeSort(arr,l,r){

   if(r>l){
       var m=Math.ceil((l+r)/2)
       // console.log(m)
       mergeSort(arr,l,m-1)
       mergeSort(arr,m,r)
       merge(arr,l,m,r)
   }

}

归并排序(酷炫简单)

function merge(left, right) {

 var tmp = [];

 while (left.length && right.length) {
   if (left[0] < right[0])
     tmp.push(left.shift());
   else
     tmp.push(right.shift());
 }

 return tmp.concat(left, right);

}

function mergeSort(a) {

 if (a.length === 1) 
   return a;

 var mid = ~~(a.length / 2)
   , left = a.slice(0, mid)
   , right = a.slice(mid);

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

}

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

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

相关文章

  • 用JavaScript实现插入排序

    摘要:实现插入排序插入排序是一种非常简单的算法,最适合大部分已经被排好序的数据。由此才有了这个名字插入排序。插入排序的最坏情况是输入的数组是按逆序排序的。总结当输入的数组已经大部分被排好序时,插入排序的效果最佳。 翻译:疯狂的技术宅https://medium.com/@jimrottin... 本文首发微信公众号:前端先锋欢迎关注,每天都给你推送新鲜的前端技术文章 插入排序的工作原理...

    LittleLiByte 评论0 收藏0
  • 算法导论笔记动态规划DP详解-钢条切割的分析与实现

    摘要:假定出售一段长度为英寸的钢条的价格为单位,钢条长度均为整英寸。注若长度为英寸的钢条的价格足够大,最优解可能就是完全不需要切割。考虑长度为的情况,下图给出了英寸钢条的所有切割方案。 DP和分治的相似 都是通过组合子问题的解来求解原问题。 DP中的programming指的是一种表格法,而非coding。 DP和分治的不同 分治步骤:(例如归并排序) 将问题划分为互不相交的子问题 ...

    shinezejian 评论0 收藏0
  • 算法日积月累】0-写在前面的话

    摘要:现在发出来的版本,我重新使用了语言实现。其实我之前介绍的老师课程也大量参考和使用算法这本书上的思路和例题。看这本书主要是让我觉得算法可以以比较轻松的方式入门。剑指这本书主要用于准备算法面试,在网络上备受好评。 我是一个半路出家的程序员,在我刚开始从事编码工作的头几年,我没有接触过算法和数据结构,觉得它们是只会在我找工作的时候用得到的知识。尽管有很多人跟我说过算法和数据结构无比重要,我也...

    flybywind 评论0 收藏0
  • JavaScript 数据结构与算法之美 - 桶排序、计数排序、基数排序

    摘要:之所以把计数排序桶排序基数排序放在一起比较,是因为它们的平均时间复杂度都为。动画计数排序思想找出待排序的数组中最大和最小的元素。桶排序计数排序能派上用场吗手机号码有位,范围太大,显然不适合用这两种排序算法。 showImg(https://segmentfault.com/img/bVbuF9e?w=900&h=500); 1. 前言 算法为王。 想学好前端,先练好内功,只有内功深厚者...

    Awbeci 评论0 收藏0

发表评论

0条评论

hankkin

|高级讲师

TA的文章

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