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表单验证框架的方法
Sep 14 Javascript
javascript获得网页窗口实际大小的示例代码
Sep 21 Javascript
javascript阻止scroll事件多次执行的思路及实现
Nov 08 Javascript
JS生成随机字符串的多种方法
Jun 10 Javascript
js预加载图片方法汇总
Jun 15 Javascript
JavaScript实现显示函数调用堆栈的方法
Apr 21 Javascript
将json转换成struts参数的方法
Nov 08 Javascript
详解在vue-cli中使用路由
Sep 25 Javascript
聊聊Vue.js的template编译的问题
Oct 09 Javascript
vue + webpack如何绕过QQ音乐接口对host的验证详解
Jul 01 Javascript
JavaScript从原型到原型链深入理解
Jun 03 Javascript
小程序中canvas的drawImage方法参数使用详解
Jul 04 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
第十一节--重载
2006/11/16 PHP
php实现微信公众号无限群发
2015/10/11 PHP
PHP编写的图片验证码类文件分享
2016/06/06 PHP
IE7提供XMLHttpRequest对象为兼容
2007/03/08 Javascript
JavaScript XML实现两级级联下拉列表
2008/11/10 Javascript
js 判断浏览器类型 去全角、半角空格 自动关闭当前窗口
2009/04/10 Javascript
iframe 自适应高度[在IE6 IE7 FF下测试通过]
2009/04/13 Javascript
Js从头学起(基本数据类型和引用类型的参数传递详细分析)
2012/02/16 Javascript
file控件选择上传文件确定后触发的js事件是哪个
2014/03/17 Javascript
js用Date对象的setDate()函数对日期进行加减操作
2014/09/18 Javascript
JS与jQuery遍历Table所有单元格内容的方法
2015/12/07 Javascript
jQuery遍历DOM节点操作之filter()方法详解
2016/04/14 Javascript
JS实现验证码倒计时的注册页面
2018/01/02 Javascript
JS实现的抛物线运动效果示例
2018/01/30 Javascript
ES7之Async/await的使用详解
2019/03/28 Javascript
Vue使用虚拟dom进行渲染view的方法
2019/12/26 Javascript
python制作小说爬虫实录
2017/08/14 Python
Python判断对象是否相等及eq函数的讲解
2019/02/25 Python
python写一个随机点名软件的实例
2019/11/28 Python
在django中form的label和verbose name的区别说明
2020/05/20 Python
利用python批量爬取百度任意类别的图片的实现方法
2020/10/07 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
2020/11/02 Python
html5利用canvas绘画二级树形结构图的示例
2017/09/27 HTML / CSS
Html5 APP中监听返回事件处理的方法示例
2018/03/15 HTML / CSS
英国天然有机美容护肤品:Neal’s Yard Remedies
2018/05/05 全球购物
测绘工程系学生的自我评价
2013/11/30 职场文书
银行职业规划书范文
2013/12/28 职场文书
入党自荐书范文
2014/03/09 职场文书
化工操作工岗位职责
2014/04/29 职场文书
股东授权委托书范本
2014/09/13 职场文书
2014年党的群众路线活动个人整改措施
2014/10/28 职场文书
文明单位创建材料
2014/12/24 职场文书
昆虫记读书笔记
2015/06/26 职场文书
React Fragment介绍与使用详解
2021/11/11 Javascript
gtx1650怎么样 gtx1650显卡相当于什么级别
2022/04/08 数码科技
vue生命周期钩子函数以及触发时机
2022/04/26 Vue.js