在一個已排序的數(shù)字數(shù)組中查找指定數(shù)字,這個JS代碼怎么寫?
網(wǎng)友解答: 您好,很高興回答你的問題。對于這個問題,通常有兩種解決方式:遍歷遍歷是最簡單的方式,即從第一個元素依次遍歷,知道找到你想要的元素:function findNum(key,
您好,很高興回答你的問題。
對于這個問題,通常有兩種解決方式:
遍歷遍歷是最簡單的方式,即從第一個元素依次遍歷,知道找到你想要的元素:
function findNum(key, list){ for(var i = 0; i < list.length; i++){ if(list[i] == key) return i; }}但是這種方式效率很差,最壞的情況下需要遍歷整個數(shù)組。
二分查找二分查找只適合已經(jīng)排序好的數(shù)組,思想是把要查找的數(shù)組分成兩半,取中間的數(shù),如果大于,則要找的數(shù)在右邊,否則在左邊。一直重復這個工作,直到找到最后的數(shù),二分查找的效率很高。
function binary_search(arr, key) { var low = 0, high = arr.length - 1; while(low <= high) { var mid = parseInt((high + low) /2); if(key == arr[mid]) { return mid; } else if(key arr[mid]) { low = mid + 1; } else if(key < arr[mid]) { high = mid -1; } else { return -1; } } }