修改比较器并用Arrays.sort排序
package code_exam;
import java.util.Scanner;
import java.util.Arrays;
import java.util.Comparator;
public class Main {
private static Scanner in;
private static int number=0;
public static void main(String[] args) {
in = new Scanner(System.in);
number = in.nextInt();
// 市民位置 X,Y
int X= in.nextInt();
int Y= in.nextInt();
// 创建市民
Citizen[] citizens = new Citizen[number];
for (int i=0; i<number; i++) {
citizens[i] = new Citizen(i, in.nextInt(), in.nextInt(), X, Y);
}
Citizen[] sortedCitizens = distanceSort(citizens);
for (int i=0; i<3; i++) {
System.out.println(sortedCitizens[i].id+1);
}
}
static Comparator<Citizen> comparatorDistance = new Comparator<Citizen>() {
public int compare(Citizen c1, Citizen c2) {
if (c1.distance_2>c2.distance_2) {
return 1;
} else if (c1.distance_2<c2.distance_2) {
return -1;
} else if (c1.id > c2.id) {
return 1;
} else {
return -1;
}
}
};
public static Citizen [] distanceSort(Citizen[] citizens) {
Arrays.sort(citizens, comparatorDistance);
return citizens;
}
}
class Citizen{
public int x;
public int y;
public int distance_2;
public int id;
Citizen(int id, int x, int y, int X, int Y){
this.id = id;
this.x = x;
this.y = y;
this.distance_2 = (X-x)*(X-x) + (Y-y)*(Y-y);
}
}
referrence:https://www.cnblogs.com/zz22–/p/10705970.html