生活随笔
收集整理的這篇文章主要介紹了
简单的搜索方法
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.順序搜索
順序或線性搜索是最基本的搜索算法。它的機(jī)制是,將每一個(gè)數(shù)據(jù)結(jié)構(gòu)中的元素和我們要找 的元素做比較。順序搜索是最低效的一種搜索算法。
function search(arr,item) {for(var i =0; i < arr.length; i++){if(arr[i] == item){return i}}return -1}
2.二分搜索
二分搜索算法的原理和猜數(shù)字游戲類似,就是那個(gè)有人說(shuō)“我正想著一個(gè)1到100的數(shù)字”的 游戲。我們每回應(yīng)一個(gè)數(shù)字,那個(gè)人就會(huì)說(shuō)這個(gè)數(shù)字是高了、低了還是對(duì)了。
這個(gè)算法要求被搜索的數(shù)據(jù)結(jié)構(gòu)已排序。(最好從小到大)
選擇數(shù)組的中間值如果選中值是待搜索值,那么算法執(zhí)行完畢(值找到了)。如果待搜索值比選中值要小,則返回步驟1并在選中值左邊的子數(shù)組中尋找。如果待搜索值比選中值要大,則返回步驟1并在選種值右邊的子數(shù)組中尋找。
class TwoSearch {constructor(arr,item) {this.low = 0;this.high = arr.length -1;this.mid = null;this.item = item;this.element = null;this.arr = arr;}binarySearch () {while(this.low <= this.high){this.mid = Math.floor((this.low + this.high) / 2 )this.element = this.arr[this.mid] //中間值if(this.element < this.item){// 中間值小于搜索值那就要去右邊的子數(shù)組中查找,重新計(jì)算中間值this.low = this.mid + 1}else if(this.element > this.item){中間值大于搜索值那就要去左邊的子數(shù)組中查找,重新計(jì)算中間值this.high = this.mid - 1}else{return this.mid}}return false}}let two = new TwoSearch([1,2,3,4,5],5)console.log(two.binarySearch()) // 4 (下標(biāo))
總結(jié)
以上是生活随笔為你收集整理的简单的搜索方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。