本書當中說了兩種搜索算法,篇幅都不大,由於融合了以前的知識點,因此看起來會相對簡單一,主要包括兩個內容:算法
從字面的意思來看,就是按照順序一個一個找下去的意思,直到找到爲止。搜索的結果能夠返回true、當前索引、當前值,不然返回false,-1,null等內容,咱們看以下一段代碼:數組
var sequentialSearch = function(item){ for (var i = 0;i<array.length; i++){ if(item === array[i]){ return i; //返回索引 // return true; 返回布爾 // return array[i]; 返回當前值 }else{ return -1; } } }
總體的思路就是遍歷數據,而後把遍歷到的每項內容,跟咱們要查找的元素相比較,若是值相等就遍歷結束,使用 return 返回,不然在遍歷結束的時候返回其它內容。
假定有以下數組,咱們要在裏面查找值爲3的元素項:數據結構
[5,4,3,2,1]
搜索的示意圖以下:ui
所謂的二分,就是把數據一分爲二,首先選中一箇中間值,若是中間值是須要查找的,那麼返回該值,不然拿須要查找的值跟這個中間值比較,而後依次循環執行這個步驟,直到找到爲止。spa
該搜索算法要求被搜索的數據結構已排序。
代碼實現:code
let binarySearch = function(item){ // 由於要求先排序 quickSort(array); let low = 0, hight = array.length - 1, mid,element; while (low <= high){ mid = Math.floor((low + high) / 2); element = array[mid]; if(element < item){ low = mid + 1; }else if(element>item){ high = mid - 1; }else{ return mid; } } return -1; }
一下是算法執行的步驟示例圖:排序
這裏的內容大部分是書中摘抄的內容,中間說到了快速排序,您能夠查閱其它的資料去了解下,排序算法相關的內容,JS常見的排序算法主要有,固然咱們這裏也能夠使用其它排序方法,好比:冒泡排序、選擇排序、插入排序、歸併排序等。索引