프로그래밍/JAVA Spring

[JAVA 자바] Arrays.sort() 를 이용한 배열 정렬(오름차순)

hectick 2022. 1. 20. 00:15

자바에서는 java.util.Arrays 클래스의 sort() 메서드를 이용해 배열을 정렬할 수 있다.

JAVA api 문서에 가보면 자세한 설명을 볼 수 있는데, 나는 int형 배열을 정렬하는 경우를 정리해보겠다.

다른 자료형의 경우는 다음 링크에서 찾아보면된다. (util 패키지 -> Arrays 클래스)

https://docs.oracle.com/javase/8/docs/api/

 

Java Platform SE 8

 

docs.oracle.com

 

배열 정렬 Arrays.sort()

api 문서에 의하면 sort() 메서드의 정렬 알고리즘은 Dual-Pivot Quicksort 이다.

이 알고리즘의 시간복잡도는 평균 O(nlogn)이며 최악의 경우는 O(n^2)지만, 일반적으로 기존의 (one-pivot) Quicksort 보단 빠르다.

 

오름차순 전체 정렬

sort(int[] a)
import java.util.Arrays;
public class Main {
	public static void main(String[] args) {
		int[] arr = {50, 70, 30, 80, 60};	
		Arrays.sort(arr); //오름차순 전체 정렬
		for(int i = 0; i < arr.length; i++) // 출력 : 30 50 60 70 80 
		{
			System.out.print(arr[i] + " ");
		}
	}
}

 

오름차순 일부 구간 정렬

형식은 다음과 같은데, fromIndex는 포함하지만, toIndex는 포함하지 않는다는 점을 주의해야 한다.

sort(int[] a, int fromIndex, int toIndex)
import java.util.Arrays;
public class Main {
	public static void main(String[] args) {
		int[] arr = {50, 70, 30, 80, 60};
		Arrays.sort(arr, 1, 4); //인덱스 1부터 4까지 오름차순 정렬 (4는 포함x)
		for(int i = 0; i < arr.length; i++) // 출력 : 50 30 70 80 60 
		{
			System.out.print(arr[i] + " ");
		}
	}
}

 

+내림차순 정렬 방법도 있는데 이건 오름차순 정렬과는 조금 달라서, 더 공부해서 보충해놓도록 하겠음