手机
当前位置:查字典教程网 >编程开发 >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自然分类法算法实现代码】相关文章:

js实现异步循环实现代码

javascript实现行拖动的方法

javaScript中slice函数用法实例分析

javascript自定义右键弹出菜单实现方法

javascript中FOREACH数组方法使用示例

javascript事件冒泡实例分析

JavaScript 预解析的原理及实现

Javascript监视变量变化的方法

JavaScript AOP编程实例

javascript常用的方法分享

精品推荐
分类导航