[Java] 배열 정렬하기

·2024년 10월 9일

Array.sort()

int[] intArr = new int[] {1,3,2,5,4};                     
double[] doubletArr = new double[] {3.3, 1.1, 5.5, 2.2, 4.4}; 
String[] stringArr = new String[] {"A","C","B","E","D"};

//정렬
Arrays.sort(intArr);            
Arrays.sort(doubletArr);    
Arrays.sort(stringArr);

결과

intArr = 1 2 3 4 5 
doubleArr = 1.1 2.2 3.3 4.4 5.5 
stringArr = A B C D E 

정렬 범위 지정
인자로 전달한 배열 뒤에 fromIndex, toIndex를 추가하여 정렬할 범위 지정 가능
Arrays.sort(arr,fromIndex,toIndex)

int[] intArr = new int[] {1,3,5,2,4};
Arrays.sort(intArr,2,5); // 2~4번 인덱스 까지만 정렬

출력 결과

intArr = 1 3 2 4 5 

Comparator 사용

Integer[] intArr = new Integer[] {1,2,1,1,1};
Arrays.sort(intArr,Comparator.naturalOrder()); // 오름차순
Arrays.sort(intArr,Comparator.reverseOrder()); // 내림차순

정렬 기준 정의

Integer[] intArr = new Integer[] {1,3,2,5,4};
Arrays.sort(intArr,new Comparator<Integer>() {
	@Override
	public int compare(Integer a, Integer b) { // a는 앞의 수 b는 뒤의 수
		System.out.println(a.compareTo(b));
        return a.compareTo(b); // 오름차순
        //return b.compareTo(a); // 내림차순
    }
});

a.compareTo(b)는 a가 b보다 작다면 양수를 반환하고, a와 b가 같다면 0을 반환, a가 b보다 크다면 음수를 반환

람다식 활용

Integer[] intArr = new Integer[] {1,3,2,5,4};
// 오름차순 정렬
Arrays.sort(intArr, (a, b) ->
	a - b
);
// 내림차순 정렬
Arrays.sort(intArr, (a, b) ->
	b - a
);



수 정렬하기

분석

  • N개의 수가 주어졌을 때, 이를 오름차순으로 정렬

입력

  • N: 수의 개수
  • 둘째 줄부터 N개의 줄에는 수가 주어짐 (중복x, 절댓값이 1000보다 작거나 같음)

출력

  • 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력
package BOJ;

import java.util.ArrayList;
import java.util.Scanner;

public class Baekjoon_2750 {
    public static void main(String args[]){
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();

        ArrayList<Integer> list = new ArrayList<>();
        for(int i = 0; i < N; i++){
            int A = scanner.nextInt();
            list.add(A);
        }
        scanner.close();

        list.sort(null);

        for(int i = 0; i < N; i++){
            System.out.println(list.get(i));
        }
    }
}
  • ArrayList에 입력받은 수를 모두 저장한 뒤 sort()로 저장해주었다

대표값2

분석

profile
꾸준히 공부하기

0개의 댓글