javascript自然分类法算法实现代码


Posted in Javascript onOctober 11, 2013
<!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 网页跳转的方法
Dec 24 Javascript
捕获键盘事件(且兼容各浏览器)
Jul 03 Javascript
javascript 获取HTML DOM父、子、临近节点
Jun 16 Javascript
yepnope.js使用详解及示例分享
Jun 23 Javascript
JavaScript使用push方法添加一个元素到数组末尾用法实例
Apr 06 Javascript
jQuery.trim() 函数及trim()用法详解
Oct 26 Javascript
JavaScript实现搜索框的自动完成功能(一)
Feb 25 Javascript
JS实现中国公民身份证号码有效性验证
Feb 20 Javascript
jQuery+PHP+Mysql实现抽奖程序
Apr 12 jQuery
详谈ES6中的迭代器(Iterator)和生成器(Generator)
Jul 31 Javascript
js 发布订阅模式的实例讲解
Sep 10 Javascript
vue之浏览器存储方法封装实例
Mar 15 Javascript
jQuery阻止事件冒泡具体实现
Oct 11 #Javascript
JS定时器实例详细分析
Oct 11 #Javascript
jquery 清空file域示例(兼容个浏览器)
Oct 11 #Javascript
jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮
Oct 11 #Javascript
JAVASCRIPT模式窗口中下载文件无法接收iframe的流
Oct 11 #Javascript
Js base64 加密解密介绍
Oct 11 #Javascript
Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
Oct 11 #Javascript
You might like
php批量更改数据库表前缀实现方法
2013/10/26 PHP
PHP获取当前相对于域名目录的方法
2015/06/26 PHP
SESSION存放在数据库用法实例
2015/08/08 PHP
PHP判断手机是IOS还是Android
2015/12/09 PHP
在Yii2中使用Pjax导致Yii2内联脚本载入失败的原因分析
2016/03/06 PHP
PHP使用正则表达式实现过滤非法字符串功能示例
2018/06/04 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
效率高的Javscript字符串替换函数的benchmark
2008/08/02 Javascript
IE JS无提示关闭窗口不提示的方法
2010/04/29 Javascript
js查错流程归纳
2012/05/04 Javascript
js性能优化技巧
2015/11/29 Javascript
JavaScript中的boolean布尔值使用学习及相关技巧讲解
2016/05/26 Javascript
javascript 中的console.log和弹出窗口alert
2016/08/30 Javascript
JavaScript和jQuery获取input框的绝对位置实现方法
2016/10/13 Javascript
微信小程序实战之自定义抽屉菜单(7)
2017/04/18 Javascript
javascript计算对象长度的方法
2017/10/25 Javascript
MVVM框架下实现分页功能示例
2018/06/14 Javascript
微信小程序网络请求封装示例
2018/07/24 Javascript
vue中如何实现后台管理系统的权限控制的方法示例
2018/09/19 Javascript
ES6中new Function()语法及应用实例分析
2020/02/19 Javascript
vue 使用post/get 下载导出文件操作
2020/08/07 Javascript
[02:44]DOTA2英雄基础教程 克林克兹
2014/01/15 DOTA
Python 开发Activex组件方法
2009/11/08 Python
Python装饰器的执行过程实例分析
2018/06/04 Python
Python中字符串与编码示例代码
2019/05/20 Python
python暴力解压rar加密文件过程详解
2019/07/05 Python
python实现一行输入多个值和一行输出多个值的例子
2019/07/16 Python
Python列表删除元素del、pop()和remove()的区别小结
2019/09/11 Python
python tkinter控件布局项目实例
2019/11/04 Python
Python3 把一个列表按指定数目分成多个列表的方式
2019/12/25 Python
Python调用jar包方法实现过程解析
2020/08/11 Python
Python+unittest+requests+excel实现接口自动化测试框架
2020/12/23 Python
Anthropologie英国:美国家喻户晓的休闲服装和家居产品品牌
2018/12/05 全球购物
经济系大学生求职信
2013/10/01 职场文书
公司任命书模板
2014/06/06 职场文书
学雷锋活动简报
2015/07/20 职场文书