js堆

网友投稿 238 2022-09-05

js堆

class Heap{ constructor(data){ this.data=data } sort(){ let iArr=this.data let n=iArr.length if(n<=1){ return iArr }else{ for(let i=Math.floor(n/2);i>=0;i--){ Heap.maxHeapify(iArr,i,n) } for(let j=0;j Arr[largest]){ largest=l } //右节点和最大值比较 if(r<=size && Arr[r] >Arr[largest]){ largest=r } if(largest!==i){ Heap.swap(Arr,i,largest) Heap.maxHeapify(Arr,largest,size) } }}export default Heap

class Heap{ constructor(str){ let map=new Map() str.split('').forEach(item=>{ if(map.has(item)){ map.set(item,map.get(item)+1) }else{ map.set(item,1) } }) this.map=map this.data=Array.from( map.values()) } sort(){ let iArr=this.data let n=iArr.length if(n<=1){ return iArr }else{ for(let i=Math.floor(n/2);i>=0;i--){ Heap.maxHeapify(iArr,i,n) } for(let j=0;j Arr[largest]){ largest=l } //右节点和最大值比较 if(r<=size && Arr[r] >Arr[largest]){ largest=r } if(largest!==i){ Heap.swap(Arr,i,largest) Heap.maxHeapify(Arr,largest,size) } }}export default Heap

普通数组查找实现:

class Ugly{constructor(n,primes){ this.n=n this.primes=primes}getAll(){ //超级丑树列表 let res=[1] let i=2 let primes=this.primes while(res.lengthitem===arr[k])) break } // k===l有两种情况1.就是当前这个数压根质因数 3 //2.所有质因数都在指定列表中 if(k===l){ if(l===0){ if(primes.find(item=>item===i)){ res.push(i) } }else{ res.push(i) } } i++ } return res[this.n-1]} //计算指定正整数n的质因数 static getPrimes(n){ let prime=(n)=>{ //存储所有的质因数 let arr=[] for(let i=2;i

堆实现:

class Ugly{constructor(n,primes){ this.n=n this.primes=new Heap(primes)}getAll(){ //超级丑树列表 let res=[1] let i=2 let primes=this.primes while(res.length{ //存储所有的质因数 let arr=[] for(let i=2;i=0;i--){ Heap.maxHeapify(iArr,i,n) } return iArr } } find(val,i=0){ let arr=this.data if(val>arr[i]||i>this.max){ return false }else if(val===arr[i]){ return val }else{ return this.find(val,i*2+1)||this.find(val,i*2+2) } }}export { Heap}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:js 校验ip和ipv6组合正则
下一篇:js修改时间格式函数
相关文章

 发表评论

暂时没有评论,来抢沙发吧~