行列互换算法

现实开发中经常要用到的一个算法,就是行列互换算法。

                             

如左图转换成右图。算法其实非常简单,就是利用取模将数字提出来,然后重新插入。代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
*{
padding:0;
margin:0;
}
ul{
overflow:hidden;
border:1px solid black;
border-right:none;
border-bottom:none;
}
ul li{
float:left;
list-style:none;
border:1px solid black;
border-top:none;
border-left:none;
}
</style>
</head>
<body>
<ul id="ul1"></ul>
<script>
var oUl = document.getElementById("ul1");
var oLi=oUl.getElementsByTagName("li");
var size = 5;
var len = size * size;
var sizeGrad=50;
oUl.style.width=size*(sizeGrad+1)+'px';
var arr=[];

for(var i=0;i<len;i++){
arr.push(i);
var aLi=document.createElement("li");
aLi.style.height=sizeGrad+"px";
aLi.style.width=sizeGrad+"px";
aLi.innerHTML=i;
oUl.appendChild(aLi);
}
var arr1= changeXY(arr,size);

for(var i=0;i<len;i++){
oLi[i].innerHTML=arr1[i];
}
function changeXY(arr,size){
var newarr=[];
var num=0;
(function() {
if(num==size){
return ;
}
for (var i = 0; i < arr.length; i++) {
if (arr[i] % size == num) {//取模块
newarr.push(arr[i]);
}
}
num++;
arguments.callee();// 调用自身函数
})();
return newarr;
}
</script>
</body>
</html>

 

posted @ 2017-04-01 00:36  LMerven  阅读(354)  评论(0)    收藏  举报