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>```