双指针求和
let arr = [1,2,3,4,5,6,7,8,9,10];
let fn=(arr,num)=>{
let left = 0;
let right = arr.length-1;
while(left<right){
if(arr[left]+arr[rigth]>num){
right--;
}else if(arr[left]+arr[right]<num){
left++;
}else if(arr[left]+arr[rigth]==num){
console.log(arr[left],arr[right]);
left++;
}
}
}
fn(arr,10);
二分查找是一种在有序数组中查找特定元素的搜索算法。
let arr = [1,2,3,4,5,7,6,8,9,11,23];
let fn = (arr, num) => {
let newarr = arr.sort((a, b) => {
return a - b
});
let min = 0;
let max = newarr.length - 1;
let cen;
while (min < max) {
cen = Math.floor((min + max) / 2);
if (newarr[cen] == num) {
return `找到了,是第${cen}个`
}
if (num > newarr[cen]) {
min = cen + 1;
} else if (num < newarr[cen]) {
max = cen - 1;
}
}
return `${num}找不到`
}
fn(arr,7);