1、/f:聚类中心个数 ;b用于记录与聚类中心最大距离的点标号;dd:在循环体中记录各点与聚类中心距离float w100100,dd100100,Q,max1,max2,distance100;/distance:记并求出录第二个聚类点b0=0;printf( 最大最小距离分类法nn);请输入坐标数 Nscanf(%d,&N);请输入各点的坐标:nfor(i=0;iN;i+)xi0=i+1;/x00=1,x10=2.for(j=1;jmax1)max1=distancej;flag=j;bf=flag; 到 z%d%d,%d 距 离 最 远 的 点 ( 既 聚 类 点 ) 是 (%d,%d)n,
2、z00,z01,z02,xflag1,xflag2);Q=C*max1;阈值 Q 是%fn,Q);while(k!=0)=f;各点到各聚类中心距离为nddij=(float)sqrt(xi1-xbj1)*(xi1-xbj1)+(xi2-xbj2)*(xi2-xbj2);%f ,ddij); printf(i+)/找出各点到聚类中心距离的最小值 wi0=ddi0;if(wi0=ddij)/if(wi0ddij不对这样会导致最后打印不出第一类的各点wi0=ddij;wi2=j;wi1=i;各坐标点到聚类中心最小距离是n printf(%fn,wi0);max2=w00;if(max2Q)f=f+1;bf=h;n 由于到聚类中心距离中有比阈值大的新聚类中心产生,h+1,xh1,xh2);else各坐标点到聚类中心距离均小于阈值%f,分类结束nk=0;一共产生%d 类聚类中心n,f+1); printf(第%d 类聚类中心包含坐标有,i+1);if(wj2=i)printf(%d,%d) ,j+1,xj1,xj2);