배열 오름차순, 내림차순 정렬하기

2022. 4. 25. 23:43Java/[도서] 자바의 정석

알고리즘 문제를 풀 때, 입력을 받은 후 정렬하는 경우가 많습니다.

 

저의 경우 오름차순은 여러 번 사용했던 터라 메서드를 알고 있었지만, 내림차순을 할 때는 잠시 망설였던 경험이 있습니다. 독자분들은 바로바로 사용하실 수 있게 이번 기회에 암기하고 가시면 좋을 것 같습니다.

 

공부 후 관련 알고리즘 문제까지 푸시는 것을 추천합니다.

[백준 2217번] 로프

 

[백준 2217번] 로프

https://www.acmicpc.net/problem/2217 2217번: 로프 N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는..

lealea.tistory.com

 

 


 

배열의 오름차순 정렬 Arrays.sort( )

기본 타입 배열, String배열에 모두 사용 가능합니다.

 

기본 타입 배열

import java.util.Arrays;

public class Array {

	public static void main(String[] args) {
		int[] arr = {5,100,20,33,66,82,200};
		Arrays.sort(arr);
		
		System.out.println(Arrays.toString(arr));

	}

}

결과

[5, 20, 33, 66, 82, 100, 200]

 

String 배열

import java.util.Arrays;

public class Array {

	public static void main(String[] args) {
		String[] arr = {"dog", "sheep", "wolf", "hyena", "deer", "dolphin"};
		Arrays.sort(arr);
		
		System.out.println(Arrays.toString(arr));

	}

}

결과

[deer, dog, dolphin, hyena, sheep, wolf]

 

 

 

배열의 내림차순 정렬

Collections클래스의 reverseOrder( ) 함수를 사용합니다.

기본 타입 배열의 경우 래퍼 클래스로 만들어서 Comparator를 두 번째 인자에 넣어주어야 합니다. 

 

기본 타입 배열

import java.util.Arrays;
import java.util.Collections;

public class Array {

	public static void main(String[] args) {
		Integer[] arr = {5,100,20,33,66,82,200};
		Arrays.sort(arr, Collections.reverseOrder());
		
		System.out.println(Arrays.toString(arr));

	}

}

결과 

[200, 100, 82, 66, 33, 20, 5]

 

String배열

import java.util.Arrays;
import java.util.Collections;

public class Array {

	public static void main(String[] args) {
		String[] arr = {"dog", "sheep", "wolf", "hyena", "deer", "dolphin"};
		Arrays.sort(arr, Collections.reverseOrder());
		
		System.out.println(Arrays.toString(arr));

	}

}

 

결과

[wolf, sheep, hyena, dolphin, dog, deer]

 

 

배열 일부분 정렬

Arrays.sort(배열이름, 시작 index, 끝 index )를 사용합니다. 

시작은 포함하고 끝은 포함하지 않습니다. 

import java.util.Arrays;

public class Array {

	public static void main(String[] args) {
		int[] arr = {5,100,20,33,66,82,200};
		Arrays.sort(arr,1,4); // 1 2 3 
		
		System.out.println(Arrays.toString(arr));

	}

}

 

결과

[5, 20, 33, 100, 66, 82, 200]