资源简介
聚类算法,使用欧氏距离实现,可通过文件对算法功能进行测试
代码片段和文件信息
#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无线称重机毕业设计
相关资源
- “背景建模技术”库37种算法
- C++实现RSA加密解密算法
- 圆检测 用霍夫变换算法实现
- AES-128-CBC算法C语言源码已经修改,可
- 页面置换算法(fifolruopt) C语言编写
- 数据结构各种算法实现(C++模板),
- 正则表达式(regex)C语言源码,超强
- 扩展欧几里德算法c++代码
- 常用算法程序集C语言描述 第三版pd
- 经典开源A星算法含完整运行程序
- VC++数字图像处理典型算法及实现
- 用贪心算法实现会场安排问题
- 地铁计费系统C++实现dijkstra算法
- 算法竞赛入门经典第2版-刘汝佳清晰非
- C++语言实现一些基本算法(两点距离
- 数据结构算法与应用--C++语言描述 书
- c++迷宫最短路径寻径算法
- 操作系统课程设计(银行家算法)附
- 基于遗传算法的机器人路径规划
- 常用算法程序集C语言及C++描述第五版
- 自动解决智能拼图,A*算法+生成可解
- 可以在单片机上计算的BP神经网络C语
- 拼音分割算法
- MH背包密码算法算法原理与实现
- opengl的立方体消隐算法
- 粒子群算法及其代码实现
- 椭圆曲线ECC加密解密算法的c语言实现
- C++数值算法 C数值算法 的随书代码
- 张平OpenCV算法精讲基于python和C++教材
- 汽车加油行驶问题 C++算法实现
评论
共有 条评论