
已解决问题
谷歌ing**pxnm用户在2014.08.10提交了关于“顾城j**ascript中二分查找这里怎么理解?”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2024-10-24T10:17:52。<scriptlanguage=j**ascript>vararr=[0,1,2,3,4,5,6,7,8,9];functionbinarySearch(arr,findVal,leftIndex,rightIndex){if(leftIndex>rightIndex){document.writeln("没找到");return;}//找到中间这个值varmidIndex=Math.floor((leftIndex+rightIndex)/2);//第一处varmidVal=arr[midIndex];//比较:if(midVal>findVal){//在左边找binarySearch(arr,findVal,leftIndex,midIndex-1);//第二处}elseif(midVal<findVal){//在右边找binarySearch(arr,findVal,midIndex+1,rightIndex);}else{document.writeln("找到下标为:"+midIndex);return;}}//测试binarySearch(arr,9,0,arr.length-1);</script>视频教程上老师写的二分查找代码我刚学JS不久,学到这里看的不明白了.不明白的地方我标的有第一处和第二处(当然后边还有,我想解决了这二处后后面的也应该明白了)第一处:leftIndex(左下标)是不是相当于arr[0]也就是0---?rightIndex右下标是不是相当于arr[9],也就是9---?然后这一行整体意思是:取返回小于(0+9)/2的最大整数4---?第二处:leftIndex和minIndex-1这里leftIndex=arr[0]?minIndex-1=arr[4]-1相当于4-1=3对吗?如果是这样,那这个3在这行里是什么意思啊?哪位帮我好好解释下啊手机上的.打了一个小时了,请详解下.谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢!希望大家能够帮助她。详细问题描述及疑问:<scriptlanguage=j**ascript>vararr=[0,1,2,3,4,5,6,7,8,9];functionbinarySearch(arr,findVal,leftIndex,rightIndex){if(leftIndex>rightIndex){document.writeln("没找到");return;}//找到中间这个值varmidIndex=Math.floor((leftIndex+rightIndex)/2);//第一处varmidVal=arr[midIndex];//比较:if(midVal>findVal){//在左边找binarySearch(arr,findVal,leftIndex,midIndex-1);//第二处}elseif(midVal<findVal){//在右边找binarySearch(arr,findVal,midIndex+1,rightIndex);}else{document.writeln("找到下标为:"+midIndex);return;}}//测试binarySearch(arr,9,0,arr.length-1);</script>视频教程上老师写的二分查找代码我刚学JS不久,学到这里看的不明白了.不明白的地方我标的有第一处和第二处(当然后边还有,我想解决了这二处后后面的也应该明白了)第一处:leftIndex(左下标)是不是相当于arr[0]也就是0---?rightIndex右下标是不是相当于arr[9],也就是9---?然后这一行整体意思是:取返回小于(0+9)/2的最大整数4---?第二处:leftIndex和minIndex-1这里leftIndex=arr[0]?minIndex-1=arr[4]-1相当于4-1=3对吗?如果是这样,那这个3在这行里是什么意思啊?哪位帮我好好解释下啊手机上的.打了一个小时了,请详解下.谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢!期待您的答案,你就是当代的活雷锋,太感谢了 !