手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >javascript自然分类法算法实现代码
javascript自然分类法算法实现代码
摘要:复制代码代码如下:自然分类法算法functiongetJenksBreaks(data,numclass){functionsortNumb...

复制代码 代码如下:

<!doctype html>

<html>

<head>

<meta charset="utf-8">

<meta http-equiv="X-UA-Compatible" content="IE=7, IE=9, IE=10">

<meta name="viewport"

content="initial-scale=1, maximum-scale=1,user-scalable=no">

<title>自然分类法算法</title>

<script>

function getJenksBreaks(data,numclass) {

function sortNumber(a,b)//在javascript里,Array的sort方法,必须用这个函数,否则不是按数字大小排序

{

return a - b

}

// int numclass;

var numdata = data.length;

data.sort(sortNumber); //先排序

var mat1=new Array();

var mat2=new Array();

var st=new Array();

for (var j = 0; j <= numdata; j++){

mat1[j]=new Array();

mat2[j]=new Array();

st[j]=0;

for(var i=0;i<=numclass;i++){

mat1[j][i]=0;

mat2[j][i]=0;

}

}

for (var i = 1; i <= numclass; i++) {

mat1[1][i] = 1;

mat2[1][i] = 0;

for (var j = 2; j <= numdata; j++){

mat2[j][i]=Number.MAX_VALUE;

}

}

var v=0;

for (var l = 2; l <= numdata; l++) {

var s1=0;

var s2=0;

var w=0;

var i3=0;

for (var m = 1; m <= l; m++) {

i3 = l - m + 1;

var val=parseInt(data[i3-1]);

s2 += val * val;

s1 += val;

w++;

v = s2 - (s1 * s1) / w;

var i4 = i3 - 1;

if (i4 != 0) {

for (var j = 2; j <= numclass; j++) {

if (mat2[l][j] >= (v + mat2[i4][j - 1])) {

mat1[l][j] = i3;

mat2[l][j] = v + mat2[i4][j - 1];

if(l==200&&j==5) alert("l="+200+",j="+5+";mat2[200][5]="+mat1[l][j]+"i3="+i3);

}

}

}

}

mat1[l][1] = 1;

mat2[l][1] = v;

}

var k = numdata;

var kclass=new Array();

/* int[] kclass = new int[numclass]; */

kclass[numclass - 1] = parseInt(data[data.length-1]);

/* kclass[numclass - 1] = (Integer) data.get(data.size() - 1); */

for (var j = numclass; j >= 2; j--) {

var id = parseInt(mat1[k][j]) - 2;

kclass[j - 2] = parseInt( data[id]);

k = parseInt( mat1[k][j] - 1);

}

return kclass;

}

function doit(){

var data = new Array( 9, 9, 9, 9, 8, 1, 9, 7, 6, 7, 10, 7, 7, 8, 5, 7, 8, 2,

6, 6, 9, 10, 2, 2, 3, 9, 9, 1, 9, 1, 6, 7, 1, 9, 6, 5, 2, 8, 6,

6, 6, 4, 1, 4, 10, 9, 6, 9, 9, 7, 10, 9, 6, 6, 6, 9, 3, 2, 5,

10, 3, 9, 6, 1, 2, 1, 2, 7, 5, 2, 6, 6, 2, 7, 9, 9, 5, 4, 6, 4,

1, 1, 5, 1, 4, 4, 2, 6, 9, 7, 3, 10, 4, 4, 9, 5, 5, 3, 5, 3,

161, 136, 22, 113, 48, 114, 166, 33, 159, 182, 135, 22, 174,

191, 60, 176, 1, 155, 62, 142, 185, 84, 140, 27, 111, 176, 189,

24, 60, 29, 139, 20, 70, 172, 90, 120, 121, 173, 57, 138, 86,

180, 143, 155, 35, 10, 136, 158, 26, 29, 136, 97, 193, 194,

104, 147, 182, 44, 84, 139, 176, 16, 130, 168, 109, 182, 87,

78, 115, 75, 32, 88, 131, 168, 89, 25, 160, 60, 72, 92, 129,

159, 99, 5, 192, 6, 53, 15, 62, 176, 73, 129, 128, 34, 190, 95,

19, 19, 196, 30 );

/* var list = new Array();

for(int i = 0; i < data.length; i++){

list.add(data[i]);

} */

//Collections.sort(list);

var text=document.getElementById("text");

text.value="";

var grade = getJenksBreaks(data, 5);

for (var i = 0; i < grade.length; i++)

text.value=text.value+grade[i]+",";

}

</script>

</head>

<body >

<button type="button"onclick="doit()">自然分类法</button>

<input id="text"></input>

</body>

</html>

【javascript自然分类法算法实现代码】相关文章:

JavaScript实现仿网易通行证表单验证

javascript常用的方法分享

JavaScript 预解析的原理及实现

javascript实现youku的视频代码自适应宽度

Javascript 字符串模板的简单实现

javaScript中slice函数用法实例分析

javascript函数特点实例

Javascript特效:随机显示图片的源代码

javascript实现树形菜单的方法

JavaScript AOP编程实例

精品推荐
分类导航