STL sort 에서는
data1이 같을 때 data2를 고려해야 하면
comp 함수안에서
if (a.data1 == b.data2){
return a.data2 > b.data2;
}
이런식으루 해주고 sort함수에 너어주면 됐잖아여
근데
직접 짠 merge sort, quick sort 같은 경우
(아마 merge를 써야 댄다 들엇슴다 quick은 unstable이라 정렬기준이 많아지면 오래걸린다 들음)
while (i
if (p[i]
buf[k++] = p[i++];
}
else {
buf[k++] = p[j++];
}
}
일단 생각난건 원래 merge sort에서 저런 부분을
if, else 가 아니라 if, else if, else if, if 이런식으로 늘려줘서 해결하는건데
유지보수가 뭐같네요 딱봐도
뭔가 재귀적으로 짜거나 comp 같은거처럼 할 수 있는 방법이 있을까요?
속도는 포기안하면서요
똑같이하면되는데
똑같이 한다는게
~~ else if (p[i].data1 == p[j].data1) { if(p[i].data2) > p[j].data2) ~~~ } ~~ 이런식으로 merge sort 안에 정렬로직부분을 세부적으로 바꾸면 된다는 소리임?
< > 이거 원래 안나오나
나오는데 글엔 왜저러지 암튼
먼 소린지 모르겠는데 비교함수 따로 만들고 정렬 부분은 따로 안 건드려도 되지 않나여 ㅇㅅㅇ
비교함수 호출 비용이 크다고 unstable 정렬이 stable 정렬보다 효율이 떨어지는지도 잘 모르겠고