所以我建立在JavaScript程序,我需要尋找值的多維字典這樣的內部:多維詞典中的二進制搜索?
var myDict = {
apple: {name: 'apple 1', age: 14},
bear: {name: 'apple 1', age: 14},
cup: {name: 'apple 1', age: 14},
deer: {name: 'apple 1', age: 14},
dog: {name: 'apple 1', age: 14},
elephant: {name: 'apple 1', age: 14},
flower: {name: 'apple 1', age: 14},
frog: {name: 'apple 1', age: 14},
gary: {name: 'apple 1', age: 14}
};
var searchValue = 'flower';
本來我是打算實現線性搜索算法,但本詞典將舉行數百至數千裏面的值。所以想象上面的字典^^可能有1200個鍵值對,每個鍵的值是另一個字典。我不知道如何爲此創建一個搜索算法。下面的代碼我到目前爲止的一個數組:
var myArr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
function binarySearch(inputArr, searchVal) {
var first = 0;
var final = inputArr.length - 1;
var middleIndex = parseInt((first + final)/2); // i used parse int because if the array is an even number i dont get like 5.5 which will create an infinite loop
var middleValue = inputArr[middleIndex];
while(first < final) {
// if its the first value/index
if (searchVal == inputArr[first]) {
return first;
}
// if its the last value/index
if (searchVal == inputArr[final]) {
return final;
}
// if its the middle value/index
if (searchVal == middleValue) {
return middleIndex;
}
// if value/index is lower
if (searchVal < inputArr[middleIndex]) {
first += 1;
}
// if value/index is higher
if (searchVal > inputArr[middleIndex]) {
final -= 1;
}
}
return 'value does not exist';
}
binarySearch(lettArr, 7);
,但我需要這種搜索算法返回匹配搜索值的指數。任何解決這個問題的方法?如果我運行:
binarySearch(myDict, 'flower'); // outputs undefined
由於IM不確定如何解釋這一點,但希望我的代碼可以幫助這聽起來令人困惑。如果你解決了這個問題,你會發現一個新的算法。由於二進制搜索是針對數組的,因此它將用於多維詞典,因此可以在簡歷上添加一些內容。 :)
什麼是預期的結果?提示:使用seach值作爲關鍵字。 –
期望值是匹配搜索值鍵的索引 – Jeebs600
實際上,我看到對象中沒有*索引*。 –