Fork me on GitHub

js一些算法实现

1.约瑟夫环实现
 1 //附有调试
 2 function joseph(n,p){
 3        var arr=[];
 4      for(var i=0;i<n;i++){
 5         arr.push(i);
 6      }
 7      debugger;
 8      var flag=0;
 9      var outnum=0;
10     while(arr.length>1){
11     //定义到里面 下次外层循环,数组长度已改变,定义到外面的话会死循环,浏览器卡死
12     var len=arr.length;
13     for(var i=0;i<len;i++){
14        flag++;
15        if(flag==p){
16           flag=0;
17           //自行脑补
18           arr.splice(i-outnum,1);
19           outnum++;
20     }
21    }
22 }
23 return arr[0];
24 }
25 //IE8以下不支持console.log()
26 if(window.console){
27    console.log(joseph(20,3));
28 }
29 else{
30    window.console={
31        log:function(){},
32        happentime:function(){}
33        //对象字面量方式自行构建
34   }
35 }
View Code

 2.斐波那契数列实现

 1  1 类似数列:1,1,2,3,5,8,13,21。。。。。
 2  2 
 3  3 function ftbn(n){
 4  4       if(n=1||n=2){
 5  5       return 1;     
 6  6 }
 7  7 else 
 8  8 {
 9  9      return ftbn(n-1)+ftbn(n-2);
10 10 }
11 11 }
View Code

3.编写insertAfter

 1  function insertAfter(newElement,targetElement){
 2 
 3                var parent=targetElement.parentNode;
 4 
 5                if(parent.lastChild==targetElement){
 6 
 7                  targetElement.appendChild(newElement);
 8 
 9 }
10 
11 else{
12 
13        parent.insertBefore(newElement,targetElement.nextSibling);
14 
15 }
16 
17 }
View Code

 4.数组去重

 1 var ss=[1,2,3,3,44,55,55,77,2,3,1];
 2 function decode2(){
 3      var arry={};
 4      var index=0;
 5      var ss2=[];
 6      var len=ss.length;
 7      for(var i=0;i<len;i++){
 8         if(arry[ss[i]]==undefined){
 9 
10        arry[ss[i]]=1;
11        ss2[index++]=ss[i];
12    }
13      else if(arry[ss[i]==1]){continue;}
14 }
15  return ss2
16 }
17 decode2();
View Code

 5.实现一个函数,判断一个字符串内出现最多次的字符,并统计这个字符

 1 var  s="helloworld";
 2 function countStr(str){
 3      var len=str.length;
 4      var obj={}; 
 5      for(var i=0;i<len;i++){
 6        var k=str.charAt(i);
 7        if(obj[k]){
 8         obj[k]++;
 9 }
10 else
11 {
12      obj[k]=1;
13 }
14 }
15    var m=0,i=null;
16      for(var b in obj){
17         if(obj[b]>m){
18             m=obj[b];
19             i=b;
20       }
21 }
22      return i+":"+m;
23 }   countStr(s);
View Code

 

posted @ 2014-12-24 22:20  Kingler  阅读(141)  评论(0编辑  收藏  举报