110,538
社区成员
发帖
与我相关
我的任务
分享
DataTable NearPoint(DataTable dt){
//Math.Sqrt((x1-x2)^2+(y1-y2)^2)
double x=0,y=0,result=0,min=0;
foreach(DataRow r1 in dt.Rows){
bool flag=true;
foreach(DataRow r2 in dt.Rows){
if(r1!=r2){
x=Math.Pow(Convert.ToDouble(r1[1])-Convert.ToDouble(r2[1]),2);
y=Math.Pow(Convert.ToDouble(r1[2])-Convert.ToDouble(r2[2]),2);
result=Math.Sqrt(x+y);
if(flag){ //主要是这个if的用法是否是最优的?有没有更好的方法代替?
min=result;
flag=false;
}
if(min>result){
min=result;
}
}
}
}
return new DataTable();
}
DataTable NearPoint(DataTable dt){
//Math.Sqrt((x1-x2)^2+(y1-y2)^2)
double x=0,y=0,result=0;
foreach(DataRow r1 in dt.Rows){
double min=double.MaxValue;
foreach(DataRow r2 in dt.Rows){
if(r1!=r2){
x=Math.Pow(Convert.ToDouble(r1[1])-Convert.ToDouble(r2[1]),2);
y=Math.Pow(Convert.ToDouble(r1[2])-Convert.ToDouble(r2[2]),2);
result=Math.Sqrt(x+y);
if(min>result){
min=result;
}
}
}
}
return new DataTable();
}
DataTable NearPoint(DataTable dt){
double x=0,y=0,result=0,min=0;
var drcount=dt.Rows.Count;
for(var i=0;i<drcount;i++){
var r1=dt.Rows[i];
bool flag=true;
for(var ii=0;ii<drcount;ii++){
var r2=dt.Rows[ii];
if(!r1r2.Equals(r2)){
x=Math.Pow(Convert.ToDouble(r1[1])-Convert.ToDouble(r2[1]),2);
y=Math.Pow(Convert.ToDouble(r1[2])-Convert.ToDouble(r2[2]),2);
result=Math.Sqrt(x+y);
if(flag){ //主要是这个if的用法是否是最优的?有没有更好的方法代替?
min=result;
flag=false;
break;
}
if(min>result){
min=result;
}
}
}
}
return new DataTable();
}
foreach(DataRow r1 in dt.Rows){
//bool flag=true;
min=0;
foreach(DataRow r2 in dt.Rows){
if(r1!=r2){
x=Math.Pow(Convert.ToDouble(r1[1])-Convert.ToDouble(r2[1]),2);
y=Math.Pow(Convert.ToDouble(r1[2])-Convert.ToDouble(r2[2]),2);
result=Math.Sqrt(x+y);
// if(flag){ //主要是这个if的用法是否是最优的?有没有更好的方法代替?
// min=result;
// flag=false;
// }
if(min>result){
min=result;
}
}
}
}