객체 정렬 보고 있는데요 도저히 이해가 안가서요 api도 보고 뭐 했는데 잘 이해가 안됩니다 ㅠ
내부적으로 머지소트를 한다고 보긴 본 거 같은데
예를 들어서 저기 코드처럼 x는 오름차순 y는 내림차순으로 정렬 할 때
input이 (1,2) (2,3) (2,2) 이렇게 있을 때
저기서 매개변수로 Point p 가 오잖아요
매개변수 Point p 와 this 를 비교해서
양수일때 자리바꿈 0 이거나 음수 이면 그대로 이건 하도 많이 구글링 해서 알겠는데
비교 하는 기준이 궁금합니다
저 input이 어떻게 정렬과정이 진행되는지 설명해 주실수 있나요
제가 생각한 것은 (틀린 생각 인 것 같아요)
우선 1,2 를 정렬 할 때 아무것도 없으니까
1,2 그대로오고
그 다음 2,3을 비교 할떄
Point p = (1,2)
this.x,y = (2,3)
이렇게 비교해서
this.x랑 p.x를 빼는 줄 알고 있었는데
어떻게 흘러가는 건가요? ㅠㅠㅠㅠ 도저히 모르겠습니다...
Point p랑 this 랑 비교해서 양수면 바꿈 아니면 그대로 인 건 알겠는데
Point p 에 뭐가 들어가있는지 this에 뭐가 들어가있는지 설명좀 해주시면 감사하겠습니다 ㅠㅠ
c++이랑 좀 다른 거 같아서 위의 코드가 맞는지 모르겠네
정렬을 버블 소트로 한다 치면 처음에 this에 첫 번째 원소 p에 두 번째 원소 들어가서 비교하고, 그 다음엔 this에 두 번째 원소, p에 세 번째 원소 들어감. 그 다음은 또 this에 세 번째 원소 p에 네 번째 원소로 해서 배열 끝까지 비교함. this 하나에만 원소가 들어가거나 하는 경우는 없음
그냥 모든 소트 종류가 결국 두개를 비교해서 어떤게 더 큰지 확인하고 교환하는거라 this에 앞에거 p에 뒤에거 들어간다 생각하면됨
c++ 해봤으면 연산자 오버로딩 생각하면 됨 클래스 내부에 오버로딩하면 다른 비교할거 하나랑 자기자신이랑 비교하지만 외부에 오버로딩하면 두개를 매개변수로 받아서 하는거처럼 후자는 자바에서는 소트에 new Comparator<> 해서 하면 볼 수 있을거