老师能用js代码模拟一下建立索引到底是干了什么吗?

老师能用js代码模拟一下建立索引到底是干了什么吗?

老师能用js代码模拟一下建立索引到底是干了什么吗?

为什么建了索引就能加快查询速度?

正在回答

登陆购买课程后可参与讨论,去登陆

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');

https://img1.sycdn.imooc.com//climg/64ce5f0e09ab9c8105530068.jpg

  • demonCry 提问者 #1

    Great!

    2023-08-06 19:26:21
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
前端高级工程师-大前端
  • 参与学习       324    人
  • 解答问题       406    个

全新打造“技术成长&职业破局”双高体系,深度打通“全栈 + 全流程 +多端+ 提效+AI赋能”,递进式锤炼思维与高阶技能,高效实现能力跃迁,助力成为“驾驭全局,深广兼备,打通多端全栈”的高级工程师

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师