1、快速排序取出数组的第一个元素,并根据这个数,将较小的放在左边,较大的放在右边,然后分别递归左右数组,得到一个升序排列的数组:constquickSort=(arr)=>{if(arr.length<=1)returnarrletfirstItem=arr.shift()letleftArr=[]letrightArr=[]for(letitemofarr){if(item<=firstItem){leftArr.push(item)}else{rightArr.push(item)}}返回quickSort(leftArr).concat(firstItem,quickSort(rightArr))}console.log(quickSort([5,17,4,22,54,55,32]))2.冒泡排序constbubble=(arr)=>{lettemfor(leti=0;iarr[j+1]){tem=arr[j]arr[j]=arr[j+1]arr[j+1]=tem}}}returnarr}console.log(bubble([5,17,4,22,54,55,32]))3.爬楼梯(db)爬楼梯一次可以爬1层或2层,那么爬n层有多少种方法:constclimb=(n)=>{if(n===1)return1if(n===2)return2//如果要爬到第n层,可以从Climb分到n-1层或直接爬到n-2层returnclimb(n-1)+climb(n-2)}console.log(climb(3),climb(4),climb(5))4.跳跃游戏(贪心算法)给定一个非负整数数组,你最初在数组的第一个位置;每个元素代表你在那个位置可以跳的最大长度。判断是否能到达最后位置:constjump=(arr)=>{letlength=0for(leti=0;ilength)返回falselength=Math.max(arr[i]+1,length)if(length>=arr.length)returntrue}returntrue}console.log(jump([1,3,1,1,2]))//trueconsole.log(jump([1,3,1,1,1,0,2]))//false5.删除相邻的重复字母functiontestString(string){letstrArr=string.分裂(””);让finalArr=[];让最后一封信;strArr.forEach((item)=>{if(!finalArr.length){//如果当前finalArr为空,直接压入一个元素finalArr.push(item);}else{//弹出最后一个元素,if等于新元素,不处理,否则同时压入两个元素);}}});返回finalArr.join("");}让string="wgshtsbfvdccdnk";console.log(testString(string));//wgshtsbfvnk6.手写PromiseclassmyPromise{constructor(executor){this.state="pendding";this.reason=null;this.result=null;this.onFulfilled=null;this.onRejected=null;让resolve=(value)=>{if(this.state==="pending"){this.state="fulfilled";this.result=值;this.onFulfilled(this.result);}};让reject=(reason)=>{if(this.state==="pending"){this.state="rejected";this.reason=原因;this.onRejected(this.reason);}};try{执行者(解决,拒绝);}赶上(错误){拒绝(错误);}}then(onFulfilled,onReject){if(this.state==="pending"){this.onFulfilled=onFulfilled;}elseif(this.state==="fulfilled"){onFulfilled(th是.result);}elseif(this.state==="rejected"){onReject(this.reason);}}}