on
Java: 1차원, 2차원 배열 오름차순, 내림차순 정렬 요약과 이해
Java: 1차원, 2차원 배열 오름차순, 내림차순 정렬 요약과 이해
1차원 배열 정렬
java.util 안에 있는 Arrays 클래스를 가져온다
1차원 배열 오름차순 1차원 배열 내림차순 import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; Arrays .sort( 배열 ); Arrays .sort( 배열 , Collections .reverseOrder() ); int 배열 사용 가능 Wrapper Class 사용(Integer 등)
*내림차순에서는 int가 아닌 Integer을 사용함에 유의한다
import java.util.Arrays; public class Main { public static void main(String[] args){ Integer[] arr = {3,5,2,1,4,6,9,8,7}; Arrays.sort(arr); for(int i=0; i<9;i++) { System.out.print(arr[i]+" "); } //오름차순으로 정렬: 1 2 3 4 5 6 7 8 9 }}
import java.util.Arrays; import java.util.Collections; public class Main { public static void main(String[] args){ Integer[] arr = {3,5,2,1,4,6,9,8,7}; Arrays.sort(arr, Collections.reverseOrder()); for(int i=0; i<9;i++) { System.out.print(arr[i]+" "); } //내림차순으로 정렬: 9 8 7 6 5 4 3 2 1 }}
2차원 배열 정렬
Comparator 클래스를 사용해 compare 함수를 재정의한다
2차원 배열 오름차순 2차원 배열 내림차순 import java.util.Arrays;
import java.util.Comparator; import java.util.Arrays;
import java.util.Comparator; Arrays.sort( 배열, new Comparator() {내부구문} ); Arrays.sort( 배열, new Comparator() {내부구문} ); if(o1[0]==o2[0] ) return o1[1]-o2[1];
else return o1[0]-o2[0]; if(o1[0]==o2[0]) return o1[1]-o2[1];
else return o2[0]-o1[0];
이해를 위해 Arrays.sort를 먼저 작성해본다
import java.util.Arrays; import java.util.Comparator; public class Main { public static void main(String[] args){ int[][] arr = {{3,5},{2,1},{4,6},{9,8},{7,10}}; Arrays.sort(arr, new Comparator() { } ); //이렇게 작성하면 Comparator가 빨간줄이 뜨는데 마우스를 올려놓으면 //자동완성해준다(Override를 생성) }}
Arrays.sort(arr, new Comparator() { } );
위처럼 중괄호를 넣는 순간 빨간줄이 뜨고 클릭하면 자동완성해준다
import java.util.Arrays; import java.util.Comparator; public class Main { public static void main(String[] args){ int[][] arr = {{3,5},{2,1},{4,6},{9,8},{7,10}}; Arrays.sort(arr, new Comparator() { @Override public int compare(int[] o1, int[] o2) { // TODO Auto-generated method stub return 0; } } ); }}
이중배열에 대한 정렬기준을 정해주어야 한다(compare 함수 수정).
이 배열 안에서는 정수형과 정수형이 아닌 배열과 배열의 비교, 즉 객체와 객체를 비교한다
정렬은 1 대 1 비교를 통해 이루어지므로 어떤 객체 o1과 o2로 표현할 수 있다
1) 둘의 값을 무엇으로 비교할 것인지 표기한다. ex) o1[0], o2[0]
2) 둘이 비교하는 값이 같을 경우 어떻게 배열할 것인지 표기한다
ex) if(o1[0]==o2[0]) return o1[1]-o2[1] //[0]항이 같으면 [1]항을 기준
3) 오름차순, 내림차순 중 방법을 정해준다
ex) if(o1[0]==o2[0]) return o1[1]-o2[1]; //o2[1]-o1[1]은 내림차순
import java.util.Arrays; import java.util.Comparator; public class Main { public static void main(String[] args){ int[][] arr = {{3,5},{2,1},{4,6},{9,8},{7,10}}; Arrays.sort(arr, new Comparator() { @Override public int compare(int[] o1, int[] o2) { if(o1[0]==o2[0]) return o1[1]-o2[1]; else return o1[0]-o2[0]; }}); //출력구문 for(int i=0; i<5;i++) { System.out.print("["+arr[i][0]+","+arr[i][1]+"]"+" "); } }}
[0]항을 기준으로 정렬되었다
from http://devyoseph.tistory.com/131 by ccl(A) rewrite - 2021-11-01 09:02:04