企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] # 题1、交换两个数的实现方法? 答: ~~~ let a = 12 let b = 14 ​ // 写法一、使用中间变量 let tmp = a a = b b = tmp ​ // 写法二、数组赋值 [a,b] = [b,a] ~~~ # 题2、写出冒泡排序法? 答:思路:双层循环,两两比较,判断、交换。 最坏事件复杂度: `O(n^2)` ~~~ // 思路: 先比较一轮一次,然后用for循环比较一轮多次,然后再加for循环比较多轮多次 let arr = [8, 11, 9, 10, 3, 8, 343, 1, 99, 23, 65] // 比较轮数 for (var i = 0; i < arr.length; i++) {    // 每轮比较次数,次数 = 长度 - 1 - 此时的轮数    for (var j = 0; j < arr.length - 1 - i; j++) {        // 相邻元素两两对比,元素交换,大的元素交换到后面        if (arr[j] > arr[j + 1]) {            // 交换            // [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]            let kong = arr[j];            arr[j] = arr[j + 1];            arr[j + 1] = kong;       }   } } ~~~ # 题3、写出折半查找法? 答:前提:只能对已经 `排好序` 的数据使用折半查找法。 思路:每次和中间的元素查找,如果查找的元素比它大,就向右查找中间的,如果小就向左查找中间的。 时间复杂度: O(logn) ![](http://ww1.sinaimg.cn/large/007WurYGgy1gf8jd05t4kj30ke066taw.jpg) 代码演示 ~~~ // 参数一、有序数组 // 参数二、要查找的数字 // 参数三、开始的下标 // 参数四、结束的下标 function halfSearch(arr, key, left, right) {    let mid // 中间位置的坐标    while (right > left) {        // 计算中间元素的下标        mid = Math.floor((left + right) / 2)        // 如果找到了就直接返回下标        if (key == arr[mid]) {            return mid       } else if (key < arr[mid]) {            // 右边界变为中间元素-1            right = mid - 1       } else if (key > arr[mid]) {            left = mid + 1       }   }    // 没找到    return -1 } ​ let arr = [1, 4, 7, 8, 12, 34, 66, 212, 6767, 23428] console.log(halfSearch(arr, 4, 0, arr.length - 1)) ~~~