#include<math.h>
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
void kmeans(int n, float* xy, int k, float* cxy)
{
int i,j;
for(i=;i<k;i++)
{
cxy[*i]=xy[*i];
cxy[*i+]=xy[*i+];
} int* mindis=(int*)malloc(n*sizeof(int));
int* premindis=(int*)malloc(n*sizeof(int));
for(i=;i<n;i++)
{
mindis[i]=-;
}
int change=; while(change)
{
for(i=;i<n;i++)
{
premindis[i]=mindis[i];
}
for(i=;i<n;i++)
{
float min=;
for(j=;j<k;j++)
{
double s=sqrt((xy[*i]-cxy[*j])*(xy[*i]-cxy[*j])+(xy[*i+]-cxy[*j+])*(xy[*i+]-cxy[*j+]));
if(s<min)
{
min=s;
mindis[i]=j;
}
}
} /*
for(i=0;i<2;i++)
{
printf("%.3f ",cxy[2*i]);
printf("%.3f\n",cxy[2*i+1]);
}
*/ for(i=;i<k;i++)
{
int num=;
float s0=0.0;
float s1=0.0;
//cout<<i<<":";
for(j=;j<n;j++)
{
if(mindis[j]==i)
{
num++;
//cout<<j<<" ";
s0+=xy[*j];
s1+=xy[*j+];
}
}
if(num)
{
cxy[*i]=s0/num;
cxy[*i+]=s1/num;
}
//cout<<endl;
}
int flag=;
for(i=;i<n;i++)
{
if(mindis[i]!=premindis[i])
{
flag=;
break;
}
}
if(flag==)
change=;
} }
int main()
{
float xy[]={1.0, 1.0, 2.0, 1.0, 1.0, 2.0, 4.0, 5.0, 5.0, 4.0, 4.0, 4.0};
float cxy[]={0.0, 0.0, 0.0, 0.0};
kmeans(,xy,,cxy);
int i;
for(i=;i<;i++)
{
printf("%.3f ",cxy[*i]);
printf("%.3f\n",cxy[*i+]);
}
return ;
}

最新文章

  1. System.Guid ToString五中格式
  2. Linux文件和目录
  3. CSS中的float与clear
  4. android中自定义的dialog中的EditText无法弹出输入法解决方案
  5. 设计模式之桥接模式(Bridge)
  6. iOS设计模式之代理模式
  7. Cache缓存对象缓存对象
  8. socket学习笔记——线程(聊天程序)
  9. socket通信简单介绍
  10. 粗谈Android中的对齐
  11. rndc: connect failed: 127.0.0.1#953: connection refused
  12. android网络图片的下载
  13. 使用ecshop电子商务系统的100个小问题
  14. 职责链模式实例(C#)
  15. 关于mysql 删除数据后物理空间未释放(转载)
  16. Archlinux 升级 pacman 时遇到的问题及其解决
  17. javascript语法之for-in语句
  18. Android中屏幕保持唤醒
  19. day18_python_1124
  20. Dynamic Routing Based On Redis

热门文章

  1. CMSIS-DAP仿真器_学习(转载)
  2. 读书笔记jvm探秘之二: 对象创建
  3. VBA连接MySQL数据库以及ODBC的配置(ODBC版本和MySQL版本如果不匹配会出现驱动和应用程序的错误)
  4. Python 技巧(三)—— list 删除一个元素的三种做法
  5. 获取获取docker的文件
  6. Algorithms(fourth edition)——无向图
  7. Windows Server 2012 R2:细节信息汇总
  8. 做一个日收入100元的APP!
  9. Python 模块搜索路径
  10. c++ 吕凤翥 第五章 类对象一