1(8分)
函數(shù)myType用于根據(jù)輸入?yún)?shù)返回相應的類型信息瞧捌。
語法如下:
var str = myType (param);
使用范例如下:
myType (1); 返回值: "number"
myType (false); 返回值: "boolean"
myType ({}); 返回值: "object"
myType ([]); 返回值:" Array"
myType (function(){}); 返回值:"function"
myType (new Date()); 返回值: "Date"
請寫出函數(shù)myType的實現(xiàn)代碼。
2(10分)
函數(shù)search用于在一個已排序的數(shù)字數(shù)組中查找指定數(shù)字宏娄。
語法如下:
var index = search(arr, dst);
使用范例如下:
var arr = [1, 2, 4, 6, 7, 9, 19,20, 30, 40, 45, 47];
search(arr, 45); 返回值: 10
請寫出函數(shù)search的實現(xiàn)代碼 請給出函數(shù),要求不能使用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>```