这是我照着书上敲的归并排序,可是控制台输出merg函数while判断中的length为undefinedfunctionsplitMergeSort(arr){varlen=arr.length;while(len==1){returnarr;}varmid=Math.floor(len/2);varleft=arr.slice(0,mid),right=arr.slice(mid,len);returnsplitMergeSort(merge(left),merge(right))}//合并函数functionmerge(arr1,arr2){varresult=[];varl=0;varr=0;while(l
2 回答
万千封印
TA贡献1891条经验 获得超3个赞
javascript是区分大小的你这里面的语法关键字都写错了是length不是Length是while不是whiLe是floor不是fLoor是slice不是sLice你确定你是照着书上敲的?这不是误人子弟吗
慕田峪4524236
TA贡献1875条经验 获得超5个赞
你merge(left)merge(right)传递的都是一个参数,你merge函数却又arr1,arr2两个参数,所以arr2.length当然是undefined而且函数也没有return并不知道是在哪本书上敲的functionsplitMergeSort(arr){varlen=arr.length;while(len==1){returnarr;}varmid=Math.floor(len/2);varleft=arr.slice(0,mid),right=arr.slice(mid,len);returnmerge(splitMergeSort(left),splitMergeSort(right))}//合并函数functionmerge(arr1,arr2){varresult=[];varl=0;varr=0;while(lif(arr1[l] result.push(arr1[l++]) }else{result.push(arr2[r++])}}while(lresult.push(arr1[l++]) }while(rresult.push(arr2[r++]) }returnresult}稍微改了一下
添加回答
举报
0/150
提交
取消