JavaScript搜尋演算法
阿新 • • 發佈:2019-01-13
1-順序搜尋 最基本、最低效的搜尋演算法
將每一個數據結構中的元素與要找的元素做比較
this.sequentialSearch = function(item){
for( var i=0; i<array.length; i++){
if( item==array[i] )
return i;
}
return -1;
};
2-二分搜尋
這個演算法要求被搜尋的資料結構已排序:
a-選擇陣列中間值;
b-如果選中值是待搜尋值,演算法執行完畢;
c-如果待搜尋值比選中值小,則返回a並在選中值左邊的子陣列中尋找;
d-如果待搜尋值比選中值大,則返回a並在選中值右邊的子陣列中尋找。
this.binarySerach= function(item){
this.quickSort(); //排序
var low= 0,
high= 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;
};
時間複雜度:
演算法 |
資料結構 |
最差情況 |
順序排序 |
陣列 |
O(n) |
二分搜尋 |
已排序的陣列 |
O( log(n) ) |
深度優先搜尋DPS |
頂點數為|V|,邊數為|E|的圖 |
O( |V|+|E| ) |
廣度優先搜尋BFS |
頂點數為|V|,邊數為|E|的圖 |
O( |V|+|E| ) |