`
sigh0829
  • 浏览: 5110 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于二分法的一点小总结

 
阅读更多
使用二分法步骤如下:

给数据排序

使用二分查找
function BinSearch(R,K)
    { //在有序表R[1..n]中进行二分查找,成功时返回结点的位置,失败时返回零
      var low=1,high=n,mid; //置当前查找区间上、下界的初值
      while(low<=high){ //当前查找区间R[low..high]非空
        mid=(low+high)/2;
        if(R[mid].key==K) return mid; //查找成功返回
        if(R[mid].kdy>K)
           high=mid-1; //继续在R[low..mid-1]中查找
        else
           low=mid+1; //继续在R[mid+1..high]中查找
       }
      return 0; //当low>high时表示查找区间为空,查找失败
     } //BinSeareh


举例,一个json格式的分级数组的二分应用:
			if(!!data && !!data[opts.jsonName] && !!va){
				var low = 0;
				var high = data[opts.jsonName].length-1;
				var lengthp = data[opts.jsonName].length-1;
				while(low<=high){ 					
					midp=Math.ceil((low+high)/2);
					if(data[opts.jsonName][low]['id']>va){
						midp = low;
						low = high+3;
					}else if(data[opts.jsonName][high]['id']<=va){
						midp = high+1;
						low = high+4;
					}
					else  if(data[opts.jsonName][midp-1]['id'] == va || (data[opts.jsonName][midp-1]['id']<va && data[opts.jsonName][midp]['id']>va)) 
					{
						low=high+1;
					}					
					else if(data[opts.jsonName][midp-1]['id']>va){
			        	  high = midp-1;
			          }else{
			        	  low=midp+1;
			         }		          
			   }	
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics