老师能用js代码模拟一下建立索引到底是干了什么吗?
老师能用js代码模拟一下建立索引到底是干了什么吗?
为什么建了索引就能加快查询速度?
8
收起
正在回答
1回答
建立了索引的数据,就是通过事先排好序,从而在查找时可以应用二分查找来提高查询效率。
关键理解二分查询算法:
function binarySearch(array, target) {
let left = 0;
let right = array.length - 1;
while (left <= right) {
const mid = Math.floor((left + right) / 2);
if (array[mid] === target) {
return mid;
}
if (array[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1; // 返回-1表示未找到目标值
}
// 使用示例
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; // 输入的数组必须是已排序的
let result = binarySearch(arr, 5);
console.log(result); // 输出:4对比一下顺序查询:
function sequentialSearch(array, target) {
for (let i = 0; i < array.length; i++) {
if (array[i] === target) {
return i;
}
}
return -1;
}
// 生成一个已排序的大数组作为测试数据
let testArray = [];
for (let i = 0; i < 10000000; i++) {
testArray.push(i);
}
let target = 9999999; // 查找的目标值
// 测量顺序查找的执行时间
console.time('Sequential Search');
sequentialSearch(testArray, target);
console.timeEnd('Sequential Search');
// 测量二分查找的执行时间
console.time('Binary Search');
binarySearch(testArray, target);
console.timeEnd('Binary Search');
前端高级工程师-大前端
- 参与学习 324 人
- 解答问题 406 个
全新打造“技术成长&职业破局”双高体系,深度打通“全栈 + 全流程 +多端+ 提效+AI赋能”,递进式锤炼思维与高阶技能,高效实现能力跃迁,助力成为“驾驭全局,深广兼备,打通多端全栈”的高级工程师
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星