关于一些算法

1 先说下递归吧,有关 100 步梯级,每次走一到三步,求有多少走法?


一开始用枚举,例如算出走了 3*33 +1,然后求出其排列组合,这样搞得头都大

下面是正确的思路,但问题是递归太多




	
	Document
	


下面是优化版本




	
	Document
	



2 排列组合算法,如求var arr =['A','B','c','D']; 取两个有多少种方法,

(1) 用树分法





无标题文档






(2)用数学的方法,A4取2之类的





无标题文档





3 矩形数组的行列变换



    
    灵域
    
    
    



	
可应于消i消乐的游戏,每行每列出现三个就消除




    
    灵域
    
    
    



	


接着就是螺旋矩阵





无标题文档





打乱数组的算法

Array.prototype.shuffle = function(){
			var input = this;
			for(var i = this.length-1;i>=0; i--){
				var randomIndex = Math.floor(Math.random()*(i+1));
				var value = input[randomIndex];
				input[randomIndex] = input[i];
				input[i] = value;
			}
			return input;
		}
		var arr = [1,2,3,4,5,6,7]
		var t = arr.shuffle();
		console.log(t);
还有就是这样
arr.sort(function(){
	return Math.random() - 0.5;
})

 判断字符串是否回文 
  




    
    灵域
    
    





最矩寻路法



    
        
    
    
    


    
        
        Document
        
        
    
    
        

排列就不说,有快速排序法,二分法类的

快速排序





无标题文档







冒泡排序





无标题文档






二分法排序




无标题文档








你可能感兴趣的:(js)