在一个已排序的数字数组中查找指定数字,这个JS代码怎么写?

网友解答: 您好,很高兴回答你的问题。对于这个问题,通常有两种解决方式:遍历遍历是最简单的方式,即从第一个元素依次遍历,知道找到你想要的元素:function findNum(key,

网友解答:

您好,很高兴回答你的问题。

对于这个问题,通常有两种解决方式:

遍历

遍历是最简单的方式,即从第一个元素依次遍历,知道找到你想要的元素:

function findNum(key, list){ for(var i = 0; i < list.length; i++){ if(list[i] == key) return i; }}

但是这种方式效率很差,最坏的情况下需要遍历整个数组。

二分查找

二分查找只适合已经排序好的数组,思想是把要查找的数组分成两半,取中间的数,如果大于,则要找的数在右边,否则在左边。一直重复这个工作,直到找到最后的数,二分查找的效率很高。

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; } } }

标签: