资源简介
聚类算法,使用欧氏距离实现,可通过文件对算法功能进行测试
代码片段和文件信息
#include
using namespace std;
#include
#include
#include
#include
#include
#define LONG 15
typedef struct LNode{ //结点的元素
string name;
double year2006;
double year2010;
double year2007;
int power; //用于聚类后存储属于哪一簇
struct LNode *next;
}LNode*list;
//链表初始化
int InitList(list &a){
a = new LNode;
a->next=NULL;
return 1;
}
//后插法创建 链表
int creat(list &aint n){
a = new LNode;
a->next = NULL;
list t=a;
list p;
ifstream inFill(“测试数据.txt“);
// cout<<“输入各个结点的数据:“< for(int i=0;i p = new LNode;
inFill>>p->name;
inFill>>p->year2006;
inFill>>p->year2007;
inFill>>p->year2010;
p->power = 0;
p->next =NULL;
t->next = p;
t=p;
}
}
//链表输出函数
int output(list &aint n){
list p=a;
p=p->next;
ofstream outFill(“测试结果.txt“);
for(int i=0;i outFill<name
<year2006
<year2007
<year2010< p=p->next;
}
p=a;
for(int i=0;i p=p->next;
cout<name
<year2006
<year2007
<year2010<
}
}
//数据规范化[01]
int standard(list &aint n){
//判定各个元素的最大值最小值
list p1 = a;
p1=p1->next;
double max2006max2010max2007min2006min2007min2010;
max2006 = p1->year2006;
min2006 = p1->year2006;
max2007 = p1->year2007;
min2007 = p1->year2007;
max2010 = p1->year2010;
min2010 = p1->year2010;
//求最大值和最小值
for(int i=0;i p1=p1->next;
if(max2006year2006) max2006 = p1->year2006;
if(max2007year2007) max2007 = p1->year2007;
if(max2010year2010) max2010 = p1->year2010;
if(min2006>p1->year2006) min2006 = p1->year2006;
if(min2007>p1->year2007) min2007 = p1->year2007;
if(min2010>p1->year2010) min2010 = p1->year2010;
}
//输出最大值最小值
//规范化 并将规范后的节点数据插入到表头之后
p1=a;
p1=p1->next;
for(int i=0;i p1->year2006 = (p1->year2006-min2006)/(max2006-min2006);
p1->year2007 = (p1->year2007-min2007)/(max2007-min2007);
p1->year2010 = (p1->year2010-min2010)/(max2010-min2010);
p1=p1->next;
}
}
//聚类算法
int Kmeans(list aint n){
list p=a;
double a1[3]b1[3]c1[3]; //存储三个种子的值
double t1t2t3; //存储结点与种子产生的结果
double s[LONG][3]; //存储第一次聚类结果的矩阵
// srand((unsigned)time(NULL));
ofstream outFill(“测试结果.txt“);
p=p->next;
for(int i=0;i if(p->name==“日本“){
a1[0]=p->year2006;
b1[0]=p->year2007;
c1[0]=p->year2010;
}
else if(p->name==“巴林“) {
a1[1]=p->year2006;
b1[1]=p->year2007;
c1[1]=p->year2010;
}
else if(p->name==“泰国“){
a1[2]=p->year2006;
b1[2]=p->year2007;
c1[2]=p->year2010;
}
p=p->next;
}
//计算十五个球队与三个种子的相异度
p=a; p=p->next;
for(int i=0;i for(int j=0;j<3;j++)
s
- 上一篇:编译原理实验报告+代码+使用说明
- 下一篇:wifi无线称重机毕业设计
相关资源
- CCS FFT c语言算法
- 小波变换算法 c语言版
- 3des加密算法C语言实现
- DES加密算法C语言实现
- 线性回归算法c语言实现
- 基于C语言的模拟退火算法
- C语言实现的DES对称加密算法
- 用VC6.0实现多边形扫描线填充算法
- c语言编写的货郎担算法
- Em算法(使用C++编写)
- STM32烧写算法flash包
- 永磁同步电机的FOC控制算法
- Proteus仿真:PID算法输出.rar
- 一个模糊PID温度控制算法源代码
- 经典滤波算法
- KMP算法C语言程序
- SVM算法实现(源码+文档)
- 算法A律U律实现
- 人工蜂群算法.docx
- BlowFish加密算法
- C语言常用算法源代码
- c++数组快排算法
- 算法表达式求值.cpp
- PID算法.c
- QR二维码C++源码 算法实现
- 基于opencv漫水填充算法综合
- 信息学奥赛一本通——算法部分
- 银行家算法分配资源的模拟实现(m
- C语言程序设计50例.docx
- 常见排序算法比较.cpp
评论
共有 条评论