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 相关文章推荐
分享XmlHttpRequest调用Webservice的一点心得
Jul 20 Javascript
dwz 如何去掉ajaxloading具体代码
May 22 Javascript
简单的Jquery遮罩层代码实例
Nov 14 Javascript
JavaScript中isPrototypeOf函数作用和使用实例
Jun 01 Javascript
jQuery中的AjaxSubmit使用讲解
Sep 25 Javascript
js实现导航吸顶效果
Feb 24 Javascript
react以create-react-app为基础创建项目
Mar 14 Javascript
node将geojson转shp返回给前端的实现方法
May 29 Javascript
学习RxJS之JavaScript框架Cycle.js
Jun 17 Javascript
JavaScript如何获取一个元素的样式信息
Jul 29 Javascript
使用Taro实现小程序商城的购物车功能模块的实例代码
Jun 05 Javascript
ElementUI 修改默认样式的几种办法(小结)
Jul 29 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
PHP4实际应用经验篇(1)
2006/10/09 PHP
php检测url是否存在的方法
2015/04/14 PHP
php集成开发环境详解
2019/09/24 PHP
PHP设计模式(六)桥连模式Bridge实例详解【结构型】
2020/05/02 PHP
使用jquery实现select添加实现后台权限添加的效果
2011/05/28 Javascript
jQuery 隐藏和显示 input 默认值示例
2014/06/03 Javascript
QQ空间顶部折页撕开效果示例代码
2014/06/15 Javascript
jQuery 中$(this).index与$.each的使用指南
2014/11/20 Javascript
javascript将DOM节点添加到文档的方法实例分析
2015/08/04 Javascript
整理JavaScript创建对象的八种方法
2015/11/03 Javascript
$.browser.msie 为空或不是对象问题的多种解决方法
2017/03/19 Javascript
Vue.js学习笔记之常用模板语法详解
2017/07/25 Javascript
ES6中字符串string常用的新增方法小结
2017/11/07 Javascript
Javascript的this详解
2019/03/23 Javascript
详解原生JS动态添加和删除类
2019/03/26 Javascript
详解如何运行vue项目
2019/04/15 Javascript
VueJS 取得 URL 参数值的方法
2019/07/19 Javascript
微信小程序实现电子签名功能
2020/07/29 Javascript
Python使用MySQLdb for Python操作数据库教程
2014/10/11 Python
用Python制作在地图上模拟瘟疫扩散的Gif图
2015/03/31 Python
Python实现爬取需要登录的网站完整示例
2017/08/19 Python
python脚本后台执行方式
2019/12/21 Python
pytorch 图像预处理之减去均值,除以方差的实例
2020/01/02 Python
利用 PyCharm 实现本地代码和远端的实时同步功能
2020/03/23 Python
python处理写入数据代码讲解
2020/10/22 Python
简历自我评价怎么写呢?
2014/01/06 职场文书
团日活动策划书
2014/02/01 职场文书
幼儿教师工作感言
2014/02/14 职场文书
《雷雨》教学反思
2014/02/20 职场文书
中国文明网向国旗敬礼寄语大全
2014/09/27 职场文书
初中生旷课检讨书范文
2014/10/06 职场文书
2014年财务人员工作总结
2014/11/11 职场文书
食堂采购员岗位职责
2015/04/03 职场文书
和谐拯救危机观后感
2015/06/15 职场文书
《鸡兔同笼》教学反思
2016/02/19 职场文书
Python学习之包与模块详解
2022/03/19 Python