[JAVA] 배열 정렬

Ming·2022년 10월 4일
0

자바

목록 보기
14/14

JAVA 배열 정렬 함수

JAVA에서는 Arrays.sort()를 이용하면 배열을 쉽게 정렬할 수 있다. sort()는 Comparable에 의해 리턴되는 값을 비교하여 오름차순 또는 내림차순으로 정렬한다.

1차원 배열

오름차순 정렬

int[] arr = {1, 10, 4, 17, 9, 25, 3};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
[1, 3, 4, 9, 10, 17, 25]

내림차순 정렬

Integer[] arr = {1, 10, 4, 17, 9, 25, 3};
Arrays.sort(arr, Collections.reverseOrder());
System.out.println(Arrays.toString(arr));

//Comparator 구현
Integer[] arr2 = {1, 10, 4, 17, 9, 25, 3};
Arrays.sort(arr2, new Comparator<Integer>(){
	@Override
    public int compare(Integer i1, Integer i2) {
    	return i2 - i1;
    }
});
System.out.println(Arrays.toString(arr2));

//lambda 이용
Integer[] arr3 = {1, 10, 4, 17, 9, 25, 3};
Arrays.sort(arr3, (i1, i2) -> i2 - i1);
System.out.println(Arrays.toString(arr3));
[25, 17, 10, 9, 4, 3, 1]

배열 부분 정렬

정렬할 범위인 처음 index와 마지막 index를 전달하여 해당 범위만 정렬할 수 있다.

int[] arr = {1, 10, 4, 17, 9, 25, 3};
Arrays.sort(arr, 0, 4);
System.out.println(Arrays.toString(arr));
[1, 4, 10, 17, 9, 25, 3]

String 길이로 정렬

String[] arr = {"Apple", "Kiwi", "Orange", "Banana", "Watermelon", "Cherry"};

Arrays.sort(arr, new Comparator<String>() {
    @Override
    public int compare(String s1, String s2) {
        return s1.length() - s2.length();
    }
});

System.out.println("Sorted arr[] : " + Arrays.toString(arr));

//lambda 이용
String[] arr2 = {"Apple", "Kiwi", "Orange", "Banana", "Watermelon", "Cherry"};

Arrays.sort(arr2, (s1, s2) -> s1.length() - s2.length());

System.out.println(Arrays.toString(arr2));
[Kiwi, Apple, Orange, Banana, Cherry, Watermelon]

2차원 배열

오름차순

int [][] arr = {{3,5}, {4,2}, {3,4}};
Arrays.sort(arr, new Comparator<int[]>() {
	@Override
	public int compare(int[] o1, int[] o2) {
		if(o1[0] == o2[0]) {
			return o1[1] - o2[1];
		}else {
			return o1[0] - o2[0]; 
		}
	}
});
3 5 
4 2 
5 4 

내림차순

int [][] arr = {{3,5}, {4,2}, {3,4}};
Arrays.sort(arr, new Comparator<int[]>() {
	@Override
	public int compare(int[] o1, int[] o2) {
		if(o1[0] == o2[0]) {
			return o2[1] - o1[1];
		}else {
			return o2[0] - o1[0]; 
		}
	}
});
5 4 
4 2 
3 5 

0개의 댓글