js实现多种排序算法(算法导论第二章)
栏目: JavaScript · 发布时间: 5年前
-
插入排序:
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)
-
归并排序(非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) }
}
-
归并排序(酷炫简单)
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));
}
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 算法导论阅读笔记 --- 排序算法
- 算法导论学习笔记5 随机算法
- 『算法导论』第二章
- 『算法导论』第 7 章:快速排序
- 『算法导论』第 8 章:线性时间排序
- 机器学习的算法和普通《算法导论》里的算法有什么本质上的异同?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Hello World
Hannah Fry / W. W. Norton Company / 2018-9 / GBP 17.99
A look inside the algorithms that are shaping our lives and the dilemmas they bring with them. If you were accused of a crime, who would you rather decide your sentence—a mathematically consistent ......一起来看看 《Hello World》 这本书的介绍吧!