[java]배열 값, 인덱스 정렬(sorted list of indices)

hjeun0111·2022년 9월 28일
0

python에 이어서 java로 개발하는 일도 있으니, 여기도 정리함

배열 정렬 후 결과를 값으로 출력하는 것도 자주 사용되지만..
배열의 인덱스로 결과를 출력 할 때 참고하고자 정리함

다른 언어로 테스트한 예제 포스팅 링크
(python) sorted list of indices 예제
(cpp) sorted list of indices 예제

1. 오름 차순 (배열 값 정렬, 배열 값의 인덱스 정렬 출력 예제)

import java.util.*;
import java.util.stream.IntStream;

public class Test {
	public static void main(String []args) throws Exception{
		Integer []ary1 =  new Integer[] {102, 67, 35, 77, 153};
		Arrays.sort(ary1);
		System.out.println(Arrays.toString(ary1));
		
		Integer []ary2 =  new Integer[] {102, 67, 35, 77, 153};
		Integer[] indexes = IntStream.range(0, ary2.length).boxed().toArray(Integer[]::new);
	
		Arrays.sort(indexes, new Comparator<Integer>() {
		    @Override public int compare(final Integer o1, final Integer o2) {
		        return Integer.compare(ary2[o1], ary2[o2]);
		    }
		});
		System.out.println(Arrays.toString(indexes));
	}
}

------ 출력 ------
[35, 67, 77, 102, 153]
[2, 1, 3, 0, 4]

2. 내림 차순 (배열 값 정렬, 배열 값의 인덱스 정렬 출력 예제)

import java.util.*;
import java.util.stream.IntStream;

public class Test {
	public static void main(String []args) throws Exception{
		Integer []ary3 =  new Integer[] {102, 67, 35, 77, 153};
		Arrays.sort(ary3, Collections.reverseOrder());
		System.out.println(Arrays.toString(ary3));
		
		Integer []ary4 =  new Integer[] {102, 67, 35, 77, 153};
		Integer[] indexes = IntStream.range(0, ary4.length).boxed().toArray(Integer[]::new);
	
		Arrays.sort(indexes, new Comparator<Integer>() {
		    @Override public int compare(final Integer o1, final Integer o2) {
		        return Integer.compare(ary4[o2], ary4[o1]);
		    }
		});
		System.out.println(Arrays.toString(indexes));	
	}
}

------ 출력 ------
[153, 102, 77, 67, 35]
[4, 0, 3, 1, 2]

그럼, 이만!!

다른 언어로 테스트한 예제 포스팅 링크
(python) sorted list of indices 예제
(cpp) sorted list of indices 예제

profile
I'm a software engineer

0개의 댓글