??JS 期末考试主观题 -- 微专业

1(8分)
函数myType用于根据输入参数返回相应的类型信息。
语法如下:
var str = myType (param);
使用范例如下:
myType (1); 返回值: "number"
myType (false); 返回值: "boolean"
myType ({}); 返回值: "object"
myType ([]); 返回值:" Array"
myType (function(){}); 返回值:"function"
myType (new Date()); 返回值: "Date"
请写出函数myType的实现代码。

2(10分)
函数search用于在一个已排序的数字数组中查找指定数字。
语法如下:
var index = search(arr, dst);
使用范例如下:
var arr = [1, 2, 4, 6, 7, 9, 19,20, 30, 40, 45, 47];
search(arr, 45); 返回值: 10
请写出函数search的实现代码 请给出函数,要求不能使用Array的原型方法,且算法时间复杂度低于O(n)。

Q1、算法时间复杂度低于O(n)??

Q2、逻辑不明白?

Q3、search(arr, 45); 返回值: 10??按照答案算法,为什么得到的middle=Math((6+11)/2)=8??

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
 
<script type="text/javascript">
 
function search(arr, dst){
    var startIndex = 0,
        stopIndex = arr.length - 1,
        middle = Math.floor((startIndex + stopIndex)/2);
    while (arr[middle] != dst && startIndex < stopIndex){      
        if (dst < arr[middle]){
            stopIndex = middle - 1;
        } else if (dst > arr[middle]){
            startIndex = middle + 1;
        }     
        middle = Math.floor((stopIndex + startIndex)/2);
    }
     
    var result = (arr[middle] != dst)? -1:middle;
    alert(result);
    return result;
} 
    var arr = [1, 2, 4, 6, 7, 9, 19,20, 30, 40, 45, 47];
    search(arr, 45); 
</script>     
</body>
</html>```
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容