var arr = [0,2,4,6,2,8,10];
function seqSearch(arr,value){
var indexArr =[];
for(let i=0;i<arr.length;i++){
if(arr[i]==value){
indexArr.push(i);
}
}
return indexArr;
}
var result = seqSearch(arr,12);
console.log(result);
二分查找(折半查找)
对一个有序数组进行查找
实现思路
确定该数组中间下标 mid=(left+right)/2;
将需要查找的数与arr[mid]进行比较
如果value>arr[mid]则向右查找
如果value<arr[mid]则向左查找
如果value==arr[mid]返回下标
否则返回-1表示没有找到
代码实现
var arr = [0,2,4,6,8,10];
function binarySearch(arr,left,right,value){
if(right==left){
if(arr[right]==value){
return right;
}else{
return -1;
}
}
var mid = parseInt((left+right)/2);
if(arr[mid]==value){
return mid;
}else if(arr[mid]<value){
return binarySearch(arr,mid+1,right,value);
}else{
return binarySearch(arr,left,mid-1,value);
}
}
var result = binarySearch(arr,0,arr.length-1,4);
console.log(result);
查找算法线性查找(顺序查找)二分查找(折半查找)插值查找线性查找(顺序查找)可以有序可以无序代码实现 var arr = [0,2,4,6,2,8,10]; function seqSearch(arr,value){ var indexArr =[]; for(let i=0;i<arr.length;i++){ if(arr[i]==value){ indexArr.push(i); } } return ind