算法
binary-search-tree.js复制
/**
* 二叉树搜索
*/
var arr = [5, 8, 10, 3, 1, 6, 9, 7, 2, 0, 4];
function search(searchValue) {
var index = 0;
var root = {
index: index,
value: arr[index],
};
index += 1;
while (index < arr.length) {
var val = arr[index];
var node = root;
while (node) {
if (val < node.value) {
if (!node.left) {
node.left = {
index: index,
value: val,
};
break;
}
node = node.left;
} else {
if (!node.right) {
node.right = {
index: index,
value: val,
};
break;
}
node = node.right;
}
}
index++;
}
var currentNode = root;
while (currentNode) {
if (currentNode.value === searchValue) {
return currentNode.index;
}
if (searchValue > currentNode.value) {
currentNode = currentNode.right;
} else {
currentNode = currentNode.left;
}
}
return -1;
}
for (const el of arr) {
console.log(`search(${el}) = ${search(el)}`);
}
binary-search.js复制
/**
* 二分法搜索
*/
var arr = new Array(20).fill(1).map((_, index) => index + 8);
function search(searchValue) {
var startIndex = 0;
var endIndex = arr.length - 1;
var compare = () => {
var middleIndex = Math.floor((startIndex + endIndex) / 2);
var val = arr[middleIndex];
if (val === searchValue) {
return middleIndex;
}
if (middleIndex < 0 || startIndex > endIndex) return -1;
if (val > searchValue) {
endIndex = middleIndex - 1;
return compare();
} else {
startIndex = middleIndex + 1;
return compare();
}
};
return compare();
}
for (const el of arr) {
console.log(`search(${el}) = ${search(el)}`);
}
大牛们的评论:朕有话说
还没有人评论哦,赶紧抢沙发!