정렬
- 배열 정렬
- Arrays.sort
- 콜렉션 정렬
- Collections.sort
오름차순 정렬하기
- ArrayList를 이용하는 방법
- 예제 코드
```Java
// 문제 링크 : https://www.acmicpc.net/problem/2750
import java.util.*;
public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
ArrayList<Integer> a = new ArrayList<Integer>();
for (int i=0; i<n; i++) {
int temp = sc.nextInt();
a.add(temp);
}
Collections.sort(a); // Sort ASC
for (int x : a) {
System.out.println(x);
}
}
} ```
- Array를 이용하는 방법
- 예제 코드
```Java
// 문제 링크 : https://www.acmicpc.net/problem/2750
import java.util.*;
public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] a = new int[n];
for (int i=0; i<n; i++) {
int temp = sc.nextInt();
}
Arrays.sort(a); // Sort ASC
for (int x : a) {
System.out.println(x);
}
}
} ```
좌표 정렬하기
import java.util.*;
import java.io.*;
class Point implements Comparable<Point> {
int x, y;
Point(int x, int y) {
this.x = x;
this.y = y;
}
public int compareTo(Point that) {
if (this.x < that.x) {
return -1;
} else if (this.x == that.x) {
if (this.y < that.y) {
return -1;
} else if (this.y == that.y) {
return 0;
} else {
return 1;
}
} else {
return 1;
}
}
}
- 예제 코드 2 Comparator
- sort method 2번째 인자로 어떻게 정렬할 것인지를 넣어주는 과정이 필요
Arrays.sort(a, new Comparator<Point>() {
public int compare(Point p1, Point p2) {
return p1.compareTo(p2);
}
});
- 예제 문제로는 11650, 11651이 있다.
- 참고) Comparator Lambda로 구현하기
Comparator<Point> comparator = (p1, p2) -> {
if(p1.y > p2.y) {
return 1;
}
else if(p2.y > p1.y) {
return -1;
}
else if(p1.y == p2.y){
if(p1.x > p2.x){
return 1;
}
else if(p2.x > p1.x){
return -1;
}
else{
return 0;
}
}
return 1;
};
Comparable과 Comparator의 의미
- Comparable은 compareTo를 구현하는데, natural순서를 정의한다.
- natural순서란 이를테면 문자열의 사전순과 같은 정석적인 순서를 의미한다.
- Comparator는 다른 순서로 정렬하고 싶을 때 사용한다.
- 이를테면 문자열을 길이 순으로 정렬하고 싶을 때 사용한다.