标签:
一、顺序查找
1、步骤:简单的将给定列表中的连续元素与给定的查找键作比较,直到遇到一个匹配的元素或遇到匹配元素前就遍历了整个列表
2、JavaScript代码实现
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>SelectionFind</title> 6 </head> 7 <body> 8 9 </body> 10 <script type="text/javascript"> 11 var search = function(arr, k) { 12 var n = arr.length; 13 arr[n] = k; 14 var i = 0; 15 while(arr[i] != k){ 16 i ++; 17 } 18 if( i < n){ 19 return i; 20 }else{ 21 return -1; 22 } 23 24 }; 25 var num = search([‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘,‘g‘], ‘b‘); 26 console.log(num); 27 </script> 28 </html>
3、算法分析:
顺序查找算法具有蛮力法的优点(简单)和缺点(效率低),是一个线型算法
一、蛮力字符串匹配
1、步骤(需要从m个“文本”中取出n个“模式”字符串)
a、将模式对准文本的前m个字符,从左向右匹配每一对响应的字符,直到m对字符全部匹配(此时算法停止)或者遇不到一对匹配的字符串
b、在后一种情况下,模式向右移一位,然后从模式的第一个字符开始,继续把模式和文本中的对应字符作比较
2、JavaScript代码实现
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>蛮力法字符串匹配</title> 6 </head> 7 <body> 8 9 </body> 10 <script type="text/javascript"> 11 var search = function(arrT, arrP) { 12 var m = arrT.length; 13 var n = arrP.length; 14 for(var i = 0; i < m - n ; i++){ 15 var j = 0; 16 while(( j < m ) && (arrP[j] == arrT[j + i])){ 17 j++; 18 } 19 if(j == n){ 20 return i; 21 } 22 } 23 return -1; 24 }; 25 console.log(search([‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘,‘g‘],[‘c‘,‘d‘,‘e‘])); 26 </script> 27 </html>
3、算法分析
移动“模式”之前,可能做足m次比较,而n-m+1次尝试都有可能出现,最坏的情况下,算法属于Θ(mn),平均效率下,算法属于Θ(m+n)=Θ(m)
标签:
原文地址:http://www.cnblogs.com/likaopu/p/5674854.html