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网络游戏-(模拟城市webgame)提供的一些例子下载
Oct 14 Javascript
javascript 字符 Escape,encodeURI,encodeURIComponent
Jul 09 Javascript
javascript delete 使用示例代码
Mar 29 Javascript
JavaScript函数获取事件源的小例子
May 14 Javascript
JavaScript驾驭网页-DOM
Mar 24 Javascript
jQuery过滤特殊字符及JS字符串转为数字
May 26 Javascript
JavaScript中的this陷阱的最全收集并整理(没有之一)
Feb 21 Javascript
Angular实现响应式表单
Aug 04 Javascript
angular json对象push到数组中的方法
Feb 27 Javascript
Vue跨域请求问题解决方案过程解析
Aug 07 Javascript
npm ci命令的基本使用方法
Sep 20 Javascript
在vue项目中封装echarts的步骤
Dec 25 Vue.js
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入门基础之php代码写法
2011/12/30 PHP
CMS中PHP判断系统是否已经安装的方法示例
2014/07/26 PHP
PHP版本常用的排序算法汇总
2015/12/20 PHP
完美解决在ThinkPHP控制器中命名空间的问题
2017/05/05 PHP
jquery 使用点滴函数代码
2011/05/20 Javascript
正负小数点后两位浮点数实现原理及代码
2013/09/06 Javascript
javascript事件委托的方式绑定详解
2015/06/10 Javascript
JavaScript多并发问题如何处理
2015/10/28 Javascript
在WordPress中加入Google搜索功能的简单步骤讲解
2016/01/04 Javascript
js基于cookie方式记住返回页面用法示例
2016/05/27 Javascript
node.js cookie-parser 中间件介绍
2016/06/06 Javascript
js 自带的 map() 方法全面了解
2016/08/16 Javascript
Angular2 多级注入器详解及实例
2016/10/30 Javascript
微信小程序 POST请求(网络请求)详解及实例代码
2016/11/16 Javascript
jQuery中select与datalist制作下拉菜单时的区别浅析
2016/12/30 Javascript
使用nodejs下载风景壁纸
2017/02/05 NodeJs
bootstrap的常用组件和栅格式布局详解
2017/05/02 Javascript
JS表单提交验证、input(type=number) 去三角 刷新验证码
2017/06/21 Javascript
详解从Vue.js源码看异步更新DOM策略及nextTick
2017/10/11 Javascript
element ui table(表格)实现点击一行展开功能
2018/12/04 Javascript
JavaScript实现省份城市的三级联动
2020/02/11 Javascript
JS hasOwnProperty()方法检测一个属性是否是对象的自有属性的方法
2021/01/29 Javascript
[01:05:59]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
python开启多个子进程并行运行的方法
2015/04/18 Python
详解pytorch 0.4.0迁移指南
2019/06/16 Python
python matplotlib库直方图绘制详解
2019/08/10 Python
基于numpy中的expand_dims函数用法
2019/12/18 Python
欧迪办公美国官网:Office Depot
2016/08/22 全球购物
服装设计专业毕业生推荐信
2013/11/09 职场文书
毕业生找工作的求职信范文
2013/12/24 职场文书
计算机专业毕业生自我鉴定
2014/01/16 职场文书
秋季运动会通讯稿
2014/01/24 职场文书
2015年党员个人剖析材料
2014/12/18 职场文书
毕业典礼致辞
2015/07/29 职场文书
Rust 连接 PostgreSQL 数据库的详细过程
2022/01/22 PostgreSQL
Python中的 enumerate和zip详情
2022/05/30 Python