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实现的抽象CSS圆角效果!!
May 03 Javascript
js操作table示例(个人心得)
Nov 29 Javascript
JavaScript模拟重力状态下抛物运动的方法
Mar 03 Javascript
jQuery插件zoom实现图片全屏放大弹出层特效
Apr 15 Javascript
jquery动态导航插件dynamicNav用法实例分析
Sep 06 Javascript
JavaScript小技巧整理
Dec 30 Javascript
VUEJS实战之利用laypage插件实现分页(3)
Jun 13 Javascript
Vue集成Iframe页面的方法示例
Dec 12 Javascript
关于vuejs中v-if和v-show的区别及v-show不起作用问题
Mar 26 Javascript
js/jQuery实现全选效果
Jun 17 jQuery
微信小程序实现分页加载效果
Nov 19 Javascript
详解Anyscript开发指南绕过typescript类型检查
Sep 23 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学习笔记之面向对象编程
2012/12/29 PHP
php 深入理解strtotime函数的使用详解
2013/05/23 PHP
php 数组随机取值的简单实例
2016/05/23 PHP
php 中的closure用法详解
2017/06/12 PHP
thinkphp框架使用JWTtoken的方法详解
2019/10/10 PHP
jQuery的实现原理的模拟代码 -2 数据部分
2010/08/01 Javascript
jQuery+formdata实现上传进度特效遇到的问题
2016/02/24 Javascript
JQuery的Pager分页器实现代码
2016/05/03 Javascript
bootstrap-wysiwyg结合ajax实现图片上传实时刷新功能
2016/05/27 Javascript
javascript中的 object 和 function小结
2016/08/14 Javascript
AngularJS动态生成div的ID源码解析
2016/08/29 Javascript
AngularJS动态绑定HTML的方法分析
2016/11/07 Javascript
详解vue项目的构建,打包,发布全过程
2017/11/23 Javascript
示例vue 的keep-alive缓存功能的实现
2018/12/13 Javascript
详解Vue调用手机相机和相册以及上传
2019/05/05 Javascript
vue读取本地的excel文件并显示在网页上方法示例
2019/05/29 Javascript
原生JS实现顶部导航栏显示按钮+搜索框功能
2019/12/25 Javascript
JS实现随机点名器
2020/04/12 Javascript
jQuery实现动态操作table行
2020/11/23 jQuery
Python 连连看连接算法
2008/11/22 Python
python命令行参数解析OptionParser类用法实例
2014/10/09 Python
Windows下PyMongo下载及安装教程
2015/04/27 Python
关于Python 3中print函数的换行详解
2017/08/08 Python
Python生成短uuid的方法实例详解
2018/05/29 Python
完美解决Python 2.7不能正常使用pip install的问题
2018/06/12 Python
Python supervisor强大的进程管理工具的使用
2019/04/24 Python
简单了解python gevent 协程使用及作用
2019/07/22 Python
Pandas聚合运算和分组运算的实现示例
2019/10/17 Python
Python基础之函数原理与应用实例详解
2020/01/03 Python
Python字符串格式化常用手段及注意事项
2020/06/17 Python
巴西葡萄酒销售网站:Wine.com.br
2017/11/07 全球购物
澳大利亚领先的在线葡萄酒零售商:Get Wines Direct
2018/03/27 全球购物
新加坡最早生产电动滑板车的制造商之一:FunsToTheFore
2020/09/08 全球购物
大学生职业生涯规划书模板
2014/01/18 职场文书
统计员岗位职责
2015/02/11 职场文书
2015年城市管理工作总结
2015/05/23 职场文书