let data = [0,1,50,120,210,333]
function cz(data,num){
//数组的最大索引
let length = data.length-1;
//数组的开始索引
let k = 0;
//循环条件为搜索范围大于1
while(k<=length){
//取最大索引的中间值索引,再下舍入为整数
let mid = Math.floor((k+length)/2);
//取最大索引的中间值索引的具体数据
let x = data[mid];
//判断具体数据是否相等于查找目标值,如果相等则return 当前索引;
if(x==num) return mid;
//如果具体数据大于查找目标值,则应该从左侧的数据开始查找了,则查找范围的最大范围值修改为(当前索引-1)
if(x>num) length= mid - 1;
//如果具体数据小于查找目标值,则应该修改查找范围的最小范围值
else k = mid + 1;
}
}
console.log(cz(data,50));
//二分算法查找的最大耗费次数是2的几次方等于数据的总长度,其实求以2为底的数据长度的对数;
//二分算法查找它只能用于有序元素列表