'자바 배열 정렬'에 해당되는 글 2건

 

 

 ■ Java 배열 정렬 (내림차순 vs 올림차순)

 

 

Arrays.sort() 함수를 이용하여 올림차순 및 내림차순 정렬을 할 수 있습니다. 

 

 

Syntax

 

public static void sort ( primitive_type_array a )

- 인자 값으로 primitive data type 인 byte[], char[], double[], long[], int[], float[] 등을 이용 합니다.

 

public static void sort ( primitive_type_array a, int fromIndex, int toIndex )

- 인자 값으로 primitive data type 인 byte[], char[], double[], long[], int[], float[] 등을 이용 하며, 정렬 시작 index 값 및 종료 index 값을 지정 합니다. 

 

public static void sort ( Object[] a )

- 인자 값으로 Object (객체) 를 받습니다. Integer[], Double[], Character[] 등의 값을 받을 수 있습니다. 

 

public static void sort ( Object[] a, int fromIndex, int toIndex )

- 인자 값으로 Object (객체) 를 받습니다. Integer[], Double[], Character[] 등의 값을 받을 수 있으며, 정렬 시작 index 값 및 종료 index 값을 지정 할 수 있습니다. 

 

public static <T> void sort ( T[] a, Comparator<? super T> c )

- 인자 값으로 객체를 받으며, 지정된 Comparator 가 가리키는 순서에 따라 지정된 객체의 배열을 정렬합니다.

 

public static <T> void sort ( T[] a, int fromIndex, int toIndex, Comparator<? super T> c )

- 인자 값으로 객체를 받으며, 지정된 Comparator 가 가리키는 순서에 따라 지정된 객체의 배열을 정렬하며, 정렬 시작 index 값 및 종료 index 값을 지정 합니다.

 

 

 

Example

 
▶ 올림차순

1
2
3
4
5
int[] arr = {214193116};
Arrays.sort(arr);
for(int i = 0; i < arr.length; i++){
    System.out.println(arr[i]);
}
cs

 

primitive data type 배열을 Arrays.sort() 함수에 입력하면 배열의 값이 변경 됩니다. 

올림 차순으로 소트를 했으므로 아래와 같이 배열이 변경 됩니다. 

 

arr =

 

위 코드를 실행 시키면 아래와 같은 결과 값이 나옵니다. 

 

4

16

19

21

31

 

 

1
2
3
4
5
int[] arr1 = {214193116};
Arrays.sort(arr1, 1, arr1.length);
for(int i = 0; i < arr1.length; i++){
    System.out.println(arr1[i]);
}
cs

 

첫번째 예제와 동일한 값을 가진 배열을 준비했습니다. 

sort() 함수의 인자 값이 세개로 첫번째는 배열을 두번째와 세번째는 변경할 index 범위를 지정합니다. 

 

위 예제에서는 변경할 index 값을 1 ~ 배열의 길이 만큼 지정 했습니다. (1 ~ 5) 

즉, 첫번째 21 값을 건드리지 않고 index 값이 1인 두번째 값 부터 마지막 값 까지만 정렬을 시킵니다.

변경 시 아래와 같은 순서로 배열이 정렬 됩니다. 

 

arr =

 

위 코드를 실행 하면 아래와 같은 결과를 얻을 수 있습니다. 

 

21

4

16

19

31

 

 

▶ 내림차순

 

1
2
3
4
5
Integer[] arr2 = {42153};
Arrays.sort(arr2, Collections.reverseOrder());
for(int i = 0; i < arr2.length; i++){
    System.out.println(arr2[i]);
}
cs

 

앞선 두개의 예제와 다르게 primitive data type 이 아니라 객체의 배열을 이용했습니다. 

Comparator 로는 Collections class 의 reverseOrder() 함수를 이용 했습니다. 

지금까지와 반대 오더 즉, 반대로 소트 하겠다는 의미로 내림차순 적용을 합니다. 

 

arr2 =

 

위와 같이 배열 정렬이 됩니다.

코드를 실행 하면 아래와 같습니다.

 

5

4

3

2

1

 

 

배열의 올림차순 및 내림차순 정렬에 대해 알아 봤습니다. 

 

 

 

 도움이 되셨다면 로그인이 필요 없는 

▼ 하트 클릭 한번 부탁 드립니다 

감사합니다 :D



 

블로그 이미지

쉬운코딩이최고

Android, Java, jsp, Linux 등의 프로그래밍 언어를 소개 합니다.

,



안녕하세요. 제임스 입니다. 


이번에는 Java에서 배열을 정렬하는 방법에 대해 알아 보겠습니다. 


Java 에서 배열(array)을 정렬하는 방법은 간단합니다. 바로 자바에서 제공하고 있는 함수를 사용하는 것이죠. 

제목에도 보시면 아시겠지만 Arrays.sort(배열) 이라는 함수를 사용하면 됩니다. 


■ 숫자 배열의 정렬

int numSort[] = {37, 27, 40, 30, 28, 19};
Arrays.sort(numSort);

for(int i = 0; i < numSort.length; i++){
System.out.println("[ i = "+i+" ]--------[ "+numSort[i]+" ]");
}

numSort 라는 배열에 6개의 숫자를 추가 했습니다. 


그리고 Arrays.sort() 함수를 이용하여 numSort 배열을 정렬 합니다. 

그리고 그것을 for loop 을 돌려서 로그를 찍어 봤습니다. 


물론 결과는 예상 하시는 대로 나옵니다 :)


[ i = 0 ]--------[ 19 ]

[ i = 1 ]--------[ 27 ]

[ i = 2 ]--------[ 28 ]

[ i = 3 ]--------[ 30 ]

[ i = 4 ]--------[ 37 ]

[ i = 5 ]--------[ 40 ]


이쁘게 정렬이 되었습니다. 



■ 영문 배열의 정렬

숫자는 위와 같이 정렬이 됨을 확인 했지만.... 문자열은? 영문 배열은? 이라는 의문 부호가 붙을 수 있습니다. 

영문 배열도 숫자와 동일한 방식으로 처리 하면 됩니다. 

아래 예제를 함께 보시겠습니다. 

String engStrSort[] = {"lovely", "random", "uptown", "girl", "extra"};
Arrays.sort(engStrSort);

for(int i = 0; i < engStrSort.length; i++){
System.out.println("[ i = "+i+" ]--------[ "+engStrSort[i]+" ]");
}

처음 숫자 배열과 다른건 딱 하나 있습니다. 바로 배열 형이 int 에서 String 으로 바뀐것 그리고 배열 값들이 숫자가 아닌 영문으로 바뀐 것이죠? 


결과는 역시 아래와 같이 나옵니다 :)


[ i = 0 ]--------[ extra ]

[ i = 1 ]--------[ girl ]

[ i = 2 ]--------[ lovely ]

[ i = 3 ]--------[ random ]

[ i = 4 ]--------[ uptown ]



■ 한글 배열의 정렬

숫자도 해봤고 영문도 해봤는데 특별히 다를게 있을까요? 

당연히 영문 배열의 정렬때와 동일하게 처리 하면 됩니다. 다만 텍스만 영문을 한글로 바꾸는 거죠? 

한글도 당연히 이쁘게 정렬을 해줍니다. 

String korStrSort[] = {"박길동", "이영자", "홍길동", "장발장", "신발장"};
Arrays.sort(korStrSort);

for(int i = 0; i < korStrSort.length; i++){
System.out.println("[ i = "+i+" ]--------[ "+korStrSort[i]+" ]");
}

결과는 당연히 아래와 같이 이쁘게 정렬되어 나옵니다. 


[ i = 0 ]--------[ 박길동 ]

[ i = 1 ]--------[ 신발장 ]

[ i = 2 ]--------[ 이영자 ]

[ i = 3 ]--------[ 장발장 ]

[ i = 4 ]--------[ 홍길동 ]



고맙게도 자바에서 sort 함수를 제공해주어 우리는 편하게 배열의 정렬을 할 수 있습니다. 



 도움이 되셨다면 로그인이 필요 없는 

▼ 하트 클릭 한번 부탁 드립니다 

감사합니다 :D



블로그 이미지

쉬운코딩이최고

Android, Java, jsp, Linux 등의 프로그래밍 언어를 소개 합니다.

,