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

栏目: JavaScript · 发布时间: 6年前

  1. 插入排序:

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

    function insertionSort(arr){

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

    }

    insertionSort(a)

  2. 归并排序(非hack)

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

    var left = []
       var right = []
       for (let i =l;i<m;i++){
           // console.log(i)
           left.push(arr[i])
       }
       for(let j = m;j<=r;j++){
           right.push(arr[j])
           // console.log(j)
       }
       left.push(Infinity)
       right.push(Infinity)
       console.log(left,right)
       var i =0
       var j =0
       for(let k =l;k<r+1;k++){
    
           if(left[i]<right[j]){
               arr[k]=left[i]
               i++
           }else{
               arr[k]=right[j]
               j++
           }
       }

    }

    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)
       }

    }

  3. 归并排序(酷炫简单)

    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));

    }


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Two Scoops of Django

Two Scoops of Django

Daniel Greenfeld、Audrey M. Roy / CreateSpace Independent Publishing Platform / 2013-4-16 / USD 29.95

Two Scoops of Django: Best Practices For Django 1.5 is chock-full of material that will help you with your Django projects. We'll introduce you to various tips, tricks, patterns, code snippets, and......一起来看看 《Two Scoops of Django》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器