21번째 줄을 보시면 pair<int, string> 단위로 비교연산을 하고 있는데 이것이 의도랑 맞는 동작인지 확인해보세요.
"stable"인지 아닌지 확인한다는 의미는 비교연산자 상으로 !(a<b || b<a ) 를 만족하는 서로 다른 두 a,b 가 있다는 의미인데
pair<int, string> 은 서로 다른 두 값은 항상 a<b || b<a 를 만족하므로
stable 성질을 전혀 써먹을 구석이 없습니다.
다음과 같은 입력에 대해서
0 b
0 a
가 나와야 하는지
0 a
0 b
가 나와야 하는지부터 확인해보시길 바랍니다.
그리고 여담인데, temp 배열의 크기를 너무 크게 잡고 있습니다. 현재와 같은 구현방식으로는 temp 배열 메모리 할당으로 인해 시간복잡도가 O(n^2) 이 나옵니다. 이 부분은 수정이 필요합니다.
kwak2418 2년 전 1
안녕하세요 여러분 병합정렬을 드디어 어느 정도 이해하고 혼자 짜봤는데요
정렬은 잘되는데 이론 상 stableSort가 되야 하는데 입력을 여러번 해보니 안되는 구간이 있더라구요..
하루종일 뒤져봐도 어디 쪽에서 stable 속성이 안들어 갔는지 모르겠어요 ㅜㅜ
지적 좀 해주세요