码迷,mamicode.com
首页 > 编程语言 > 详细

关于算法--蛮力法--字符与字符串匹配

时间:2016-07-16 00:44:42      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:

一、顺序查找

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!