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를 사용해야 한다는 점을 기억하자.

int를 사용했을 때(에러)

 

Integer를 사용했을 때