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 相关文章推荐
JS使用onerror捕获异常示例
Aug 03 Javascript
js实现浏览器倒计时跳转页面效果
Aug 12 Javascript
JS原型链 详解及示例代码
Sep 06 Javascript
Node.js连接postgreSQL并进行数据操作
Dec 18 Javascript
JavaScript对象封装的简单实现方法(3种方法)
Jan 03 Javascript
原JS实现banner图的常用功能
Jun 12 Javascript
js仿微信抢红包功能
Sep 25 Javascript
JS实现左边列表移到到右边列表功能
Mar 28 Javascript
vue项目中,main.js,App.vue,index.html的调用方法
Sep 20 Javascript
vue-cli安装使用流程步骤详解
Nov 08 Javascript
深入理解vue-class-component源码阅读
Feb 18 Javascript
vue的路由映射问题及解决方案
Oct 14 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 设计模式之 工厂模式
2008/12/19 PHP
探讨多键值cookie(php中cookie存取数组)的详解
2013/06/06 PHP
解析:使用php mongodb扩展时 需要注意的事项
2013/06/18 PHP
浅析php原型模式
2014/11/25 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
PHP数组对象与Json转换操作实例分析
2019/10/22 PHP
Google Map API更新实现用户自定义标注坐标
2009/07/29 Javascript
js不能跳转到上一页面的问题解决方法
2013/03/01 Javascript
jquery原创弹出层折叠效果点击折叠弹出一个层
2014/03/12 Javascript
IE浏览器IFrame对象内存不释放问题解决方法
2014/08/22 Javascript
jQuery的text()方法用法分析
2014/12/20 Javascript
基于zepto.js实现仿手机QQ空间的大图查看组件ImageView.js详解
2015/03/05 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
2015/08/24 Javascript
jQuery实现的AJAX简单弹出层效果代码
2015/11/26 Javascript
JavaScript解八皇后问题的方法总结
2016/06/12 Javascript
DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)
2016/11/09 Javascript
JS根据生日月份和日期计算星座的简单实现方法
2016/11/24 Javascript
详解Node.js实现301、302重定向服务
2017/04/07 Javascript
js判断节假日实例代码
2017/12/27 Javascript
JS实现的缓冲运动效果示例
2018/04/30 Javascript
Vue+webpack项目配置便于维护的目录结构教程详解
2018/10/14 Javascript
jQuery是用来干什么的 jquery其实就是一个js框架
2021/02/04 jQuery
[49:27]LGD vs OG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python中pass语句用法实例分析
2015/04/30 Python
在Django中同时使用多个配置文件的方法
2015/07/22 Python
深入理解python try异常处理机制
2016/06/01 Python
python 简单备份文件脚本v1.0的实例
2017/11/06 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
2020/12/08 Python
英国最大的线上保健品零售商之一:Vitamin Planet
2016/12/01 全球购物
房地产促销活动方案
2014/03/01 职场文书
干部鉴定材料
2014/05/18 职场文书
政工例会汇报材料
2014/08/26 职场文书
三严三实民主生活会发言稿
2014/10/13 职场文书
2016八一建军节慰问信
2015/11/30 职场文书
《少年闰土》教学反思
2016/02/18 职场文书
redis 限制内存使用大小的实现
2021/05/08 Redis