java/개념
오름차순/내림차순 정수 정렬
unhyepnhj
2024. 5. 11. 17:02
다들 뭔가 멋있게 정렬하던데 나는 버블정렬밖에 모른다
//버블정렬
int[] intArray = {7, 2, 10, 4, 8, 3, 1, 9, 5, 6};
int i, j, temp;
for(i=9; i>0; i--){
for(j=0; j<i; j++){
if(intArray[j]>intArray[j+1]){
//앞 원소가 뒤 원소보다 크면 앞 원소를 뒤로 보내야 됨
temp=intArray[j];
intArray[j]=intArray[j+1];
intArray[j+1]=temp;
}
}
}
for(i=0; i<10; i++) System.out.print(intArray[i]+" ");
더 멋있게 정렬하고 싶으므로 Arrays.sort()를 사용해 보겠다
java.util.Arrays 클래스의 sort() 메소드를 사용하는 것이다. 해당 메소드는 static 메소드로 선언되어 있다.
import 문을 잊지 말자
이처럼 Arrays.sort를 사용하면 배열을 오름차순으로 정렬할 수 있다.
sort()의 인자로 comparator 객체를 전달하면 오름차순 이외에도 다른 방식으로 정렬이 가능하다고 한다.
comparator란?
정렬을 위한 여러가지를 제공하는 인터페이스이다.
내림차순 정렬을 위해서 이 Collections 클래스의 reverseOrder 메소드를 사용할 수 있는데, 이는 내부적으로 comparator 인터페이스를 구현한 클래스를 리턴하는 Collections의 static 클래스이다.
Arrays.sort(intArr, Collections.reverseOrder());
sort()의 인자로 Collections.reverseOrder()의 리턴값을 준 것이다.
Comparator로 비교할 때는 int가 아니라 Wrapper 클래스의 Integer를 사용해야 한다는 점을 기억하자.