点到原点的距离问题
题目如下:利用随机函数定义10对(x,y)值,存入一个数组中,按与原点(0,0)的距离由小到大的顺序输出所有的点及其到原点的距离。下面是我的程序,虽然能得出结果,但自己感觉并不太好,有没有什么好的算法或者解法呢。
public class Point1Test
{
public static void main(String [] args)
{
int [][] a=new int[10][2];
for(int i=0;i<10;i++)
{
for(int j=0;j<2;j++)
{
a[i][j]=(int)(Math.random()*10);
}
}
for(int i=0;i<10;i++) //输出10对(x,y)值
{
for(int j=0;j<2;j++)
{
System.out.print(a[i][j]+" ");
}
System.out.println();
}
double [] b=new double[10];
for(int i=0;i<10;i++)
{
b[i]=Math.sqrt(a[i][0]*a[i][0]+a[i][1]*a[i][1]); //计算每个点到原点的距离
}
for(int i=0;i<9;i++)
{
for(int j=i+1;j<10;j++)
{
if(b[i]>b[j])
{
double temp=b[i]; //通过到原点距离的长短来调整每个点的位置
b[i]=b[j];
b[j]=temp;
int temp1=a[i][0];
int temp2=a[i][1];
a[i][0]=a[j][0];
a[i][1]=a[j][1];
a[j][0]=temp1;
a[j][1]=temp2;
}
}
}
System.out.println();
for(int i=0;i<10;i++)
{
for(int j=0;j<2;j++)
{
System.out.print(a[i][j]+" "); // 按由小到大顺序输出每个点到原点的距离和此点的坐标
}
System.out.print(b[i]+" ");
System.out.println();
}
}
}