20-09-01(称检测点查询)

称检测点查询

分别对距离和位置使用一次排序即可

import java.util.*;
public class 二维数组按值排序 {
    
    
    public static void main(String[] args){
    
    
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        int X = input.nextInt();
        int Y = input.nextInt();
        int[][] a = new int[n][2];
        //输入
        for(int i =0;i<n;i++){
    
    
            int x = input.nextInt();
            int y = input.nextInt();
            a[i][0] = (X-x)*(X-x)+(Y-y)*(Y-y);
            a[i][1] = i+1;
        }
        //按距离排序
        for(int i =0;i<n;i++){
    
    
            for(int j =0;j<n;j++){
    
    
                if(a[i][0] < a[j][0]){
    
    
                    int t1 = a[i][0];
                    int t2 = a[i][1];
                    a[i][0] = a[j][0];
                    a[i][1] = a[j][1];
                    a[j][0] = t1;
                    a[j][1] = t2;
                }
            }
        }
//        for(int i =0;i<n;i++){
    
    
//            System.out.print(a[i][0]+" ");
//        }
//        System.out.println();
        //按编号排序
        for(int i =0;i<n-1;i++){
    
    
            for(int j =i+1;j<n;j++){
    
    
                if(a[i][0] == a[j][0]){
    
    
                    if(a[i][1] > a[j][1]) {
    
    
                        int t = a[i][1];
                        a[i][1] = a[j][1];
                        a[j][1] = t;
                    }
                }

            }
        }
        //打印结果
        for(int i =0;i<3;i++){
    
    
                System.out.println(a[i][1] + " ");
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_51985653/article/details/120829666