ktj7916   1년 전

자바의 경우 Primitive type 이면  더블피버 퀵소트를 사용하고 그외 객체의 경우 합병정렬 혹은 팀정렬을 사용한다고들었습니다.

그리고 이문제의 경우 primitivetype 정렬이라 최악의경우 O(N^2)라서 시간초과가 뜨는걸로알고있습니다.

그 해결책으로 Wrapper클래스에 래핑해서 정렬을하면 시간초과가 안난다고들었는데

이것의 정확한 의미를 모르겠습니다.(wrapper클래스를 모른다는 의미가아닙니다)

조언좀부탁드립니다.

lovinix   1년 전

wrapper클래스가 뭔지 아시고, primitive type이면 n^2정렬이 될 수 있으니 래핑을 해서 정렬을 해야된다는거도 아시는데 정확히 무엇을 물어보시는건지 잘 모르겠습니다

chogahui05   1년 전

int형을 Integer로 boxing 해서 정렬해 버리면..

Integer는 기본형이 아닙니다. 객체입니다. Wrapper 클래스에 래핑을 한다는 건 그러한 의미입니다.

그 외 객체의 경우 합병정렬 혹은 팀정렬을 사용한다고들었습니다. 에서

그 외 객체의 경우 = Integer도 그 외 객체이다. 라는 것을 간파하시면 궁금증은 해결되신 거 같아요.

ktj7916   1년 전

만약 int[] arr = {1,2,3,4,5}라고 있을때 Integer로 wrapping한다는 의미는

Integer 배열을 선언하고  요소를 복사한다음 이 Integer배열을 Arrays.sort하면 된다는의미인가요??

chogahui05   1년 전

그리고 하나 팁 더 드리자면 ArrayList <int> ~ 이렇게는 쓰지 못해요.

ArrayList <Integer> ~ 로는 쓸 수 있어도.

그런데 ArrayList <Integer> arr = new ArrayList<Integer>(); 이렇게 선언하고

arr.add(3); 이렇게 해도 무리없이 돌아갑니다. 그런가요? 이건..

자동 박싱, 언박싱이 일어나서 그래요..

+

Integer의 cache에 대해서도 찾아보시면 도움 되실 듯 싶습니다.

chogahui05   1년 전

부르는 메소드가 달라요.

이클립스에서 디버그 잡으시고, F5 누르셔서 함수 들어가 보세용.. ㅎㅎ

ktj7916   1년 전

감사합니다~~!

댓글을 작성하려면 로그인해야 합니다.