自己算法不好,刷一些算法题,整理供自己复习使用~
实现二分查找
function erFen(target,array) {
let left = 0;
let right = array.length - 1;
while(left <= right) {
let middle = Math.floor((left + right)/2);
if (array[middle] === target) {
return true;
}else if (array[middle] < target) {
left = middle + 1;
}else {
right = middle - 1;
}
}
return false;
}
执行如下
二维数组的查找
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思路
- 首先是有顺序的无论行还是列
- 取二维数组中第一个数组的最后一位或者最后一个数组的第一位与target进行比较
这里会有一个唯一的路径,否则会重复路径
function Find(target, array){
let col = 0;
let row = array.length -1;
while(row >= 0 && col <= array.length -1) {
if (target < array[col][row]){
row --;
}else if(target === array[col][row]) {
return true;
}else{
col ++;
}
}
return false
}