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 相关文章推荐
图片onload事件触发问题解决方法
Jul 31 Javascript
jquery星级插件、支持页面中多次使用
Mar 25 Javascript
纯js网页画板(Graphics)类简介及实现代码
Dec 24 Javascript
js取float型小数点后两位数的方法
Jan 18 Javascript
jQuery实现大转盘抽奖活动仿QQ音乐代码分享
Aug 21 Javascript
JS实现浏览器状态栏文字闪烁效果的方法
Oct 27 Javascript
jquery操作select元素和option的实例代码
Feb 03 Javascript
JavaScript html5 canvas绘制时钟效果(二)
Mar 27 Javascript
KnockoutJS 3.X API 第四章之表单textInput、hasFocus、checked绑定
Oct 11 Javascript
Vuejs仿网易云音乐实现听歌及搜索功能
Mar 30 Javascript
vue组件开发props验证的实现
Feb 12 Javascript
JavaScript监听触摸事件代码实例
Dec 30 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正则表达式使用的详细介绍
2013/04/27 PHP
ecshop适应在PHP7的修改方法解决报错的实现
2016/11/01 PHP
浅谈php中fopen不能创建中文文件名文件的问题
2017/02/06 PHP
php经典趣味算法实例代码
2020/01/21 PHP
才发现的超链接js导致网页中GIF动画停止的解决方法
2007/11/02 Javascript
javascript 获取模态窗口的滚动位置代码
2013/08/06 Javascript
javascript教程:关于if简写语句优化的方法
2014/05/17 Javascript
JQuery获取与设置HTML元素的内容或文本的实现代码
2014/06/20 Javascript
使用Meteor配合Node.js编写实时聊天应用的范例
2015/06/23 Javascript
JavaScript对象数组的排序处理方法
2015/10/21 Javascript
javascript中arguments,callee,caller详解
2016/03/16 Javascript
利用Angular.js限制textarea输入的字数
2016/10/20 Javascript
微信小程序 绘图之饼图实现
2016/10/24 Javascript
nodejs实例解析(输出hello world)
2017/01/03 NodeJs
canvas绘制万花筒效果(代码分享)
2017/01/20 Javascript
浅谈vue中慎用style的scoped属性
2017/11/28 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变opacity实现)
2019/01/24 Javascript
angular inputNumber指令输入框只能输入数字的实现
2019/12/03 Javascript
微信小程序实现比较功能的方法汇总(五种方法)
2020/03/07 Javascript
python获取Linux下文件版本信息、公司名和产品名的方法
2014/10/05 Python
python访问类中docstring注释的实现方法
2015/05/04 Python
Python的装饰器用法学习笔记
2016/06/24 Python
python提取包含关键字的整行数据方法
2018/12/11 Python
python实现多层感知器
2019/01/18 Python
Python3内置模块之json编解码方法小结【推荐】
2020/12/09 Python
python判断所输入的任意一个正整数是否为素数的两种方法
2019/06/27 Python
关于Python解包知识点总结
2020/05/05 Python
python用700行代码实现http客户端
2021/01/14 Python
世界领先的以旅馆为主的在线预订平台:Hostelworld
2016/10/09 全球购物
台湾旅游网站:灿星旅游
2018/10/11 全球购物
上海期货面试题
2014/01/31 面试题
冰淇淋店的创业计划书
2014/02/07 职场文书
电子商务个人职业生涯规划范文
2014/02/12 职场文书
项目经理任命书范本
2014/06/05 职场文书
离职感谢信
2015/01/21 职场文书
python中super()函数的理解与基本使用
2021/08/30 Python