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 页面刷新location.reload和location.replace的区别小结
Dec 24 Javascript
jQueryUI如何自定义组件实现代码
Nov 14 Javascript
Extjs中通过Tree加载右侧TabPanel具体实现
May 05 Javascript
利用JS判断用户是否上网(连接网络)
Dec 23 Javascript
改变隐藏的input中value的值代码
Dec 30 Javascript
JavaScript实现三级级联特效
Nov 05 Javascript
webpack vue项目开发环境局域网访问方法
Mar 20 Javascript
取消Bootstrap的dropdown-menu点击默认关闭事件方法
Aug 10 Javascript
jQuery实现动态添加和删除input框代码实例
Mar 29 jQuery
TypeScript开发Node.js程序的方法
Apr 30 Javascript
vue学习笔记之slot插槽用法实例分析
Feb 29 Javascript
js实现右键弹出自定义菜单
Sep 08 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 配置open_basedir 让各虚拟站点独立运行
2009/11/12 PHP
简单解决新浪SAE无法上传文件的问题
2015/05/13 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
javascript event 事件解析
2011/01/31 Javascript
JS字符串函数扩展代码
2011/09/13 Javascript
Web Inspector:关于在 Sublime Text 中调试Js的介绍
2013/04/18 Javascript
Jquery遍历checkbox获取选中项value值的方法
2014/02/13 Javascript
详解axios在vue中的简单配置与使用
2017/05/10 Javascript
js实现单张图片平移切换效果
2017/10/11 Javascript
cordova入门基础教程及使用中遇到的一些问题总结
2017/11/14 Javascript
使用Vue动态生成form表单的实例代码
2018/04/26 Javascript
WebPack配置vue多页面的技巧
2018/05/15 Javascript
ionic grid(栅格)九宫格制作详解
2018/06/30 Javascript
vue中多个倒计时实现代码实例
2019/03/27 Javascript
vue实现文件上传读取及下载功能
2020/11/17 Javascript
微信小程序点击保存图片到本机功能
2019/12/13 Javascript
node.js使用http模块创建服务器和客户端完整示例
2020/02/10 Javascript
[06:07]DOTA2-DPC中国联赛3月5日Recap集锦
2021/03/11 DOTA
Python的Tornado框架的异步任务与AsyncHTTPClient
2016/06/27 Python
Python实现的多线程http压力测试代码
2017/02/08 Python
NetworkX之Prim算法(实例讲解)
2017/12/22 Python
python 执行文件时额外参数获取的实例
2018/12/18 Python
python爬虫破解字体加密案例详解
2021/03/02 Python
薇诺娜官方网上商城:专注敏感肌肤
2017/05/25 全球购物
德国二手设计师时装和复古时装跳蚤市场:Mädchenflohmarkt
2020/11/09 全球购物
档案管理员岗位职责
2013/12/01 职场文书
酒店个人求职信范文
2014/01/25 职场文书
《记承天寺夜游》教学反思
2014/02/16 职场文书
中学教师教育感言
2014/02/21 职场文书
百货商场楼层班组长竞聘书
2014/03/31 职场文书
2014年个人售房协议书
2014/10/30 职场文书
2014年酒店年度工作总结
2014/12/10 职场文书
2015年机关党建工作总结
2015/05/22 职场文书
悬崖上的金鱼姬观后感
2015/06/15 职场文书
MySQL表的增删改查基础教程
2021/04/07 MySQL
解决mysql:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO/YES)
2021/06/26 MySQL