내 알고리즘 책 보니까 그런 것 같은데...
(전략) (중략) 그러나 연결된 리스트를 사용하여 구현한 합병정렬은 합병정렬의 단점을 거의 모두 제거한다. 아직 남아있는 유일한 단점은 세타(n)만큼 추가 링크에 사용되는 부가적인 공간이 필요하다는 것이다.
내 알고리즘 책 보니까 그런 것 같은데...
(전략) (중략) 그러나 연결된 리스트를 사용하여 구현한 합병정렬은 합병정렬의 단점을 거의 모두 제거한다. 아직 남아있는 유일한 단점은 세타(n)만큼 추가 링크에 사용되는 부가적인 공간이 필요하다는 것이다.
대충 링크드 가지고 교환 안하고 통째로 순서를 바꾸겠다는 내용인거 같은데, 그거 퀵솔트도 가능하다. 퀵솔트에 그짓하면 역정렬도 최소시간 걸림
퀵솔트 역정렬에서 하나하나 뒤집어서 최악의 경우가 나오는건데 그냥 뭉텅이로하면 한번 비교만에 통째로 뒤집어서 정렬 제대로 됬을때 만큼 속도나옴
아니 이렇게 나와있는데... 합병정렬은 빠른 정렬이 하는 것보다 레코드 지정횟수가 항상 3배 가량이 되기 때문에, 빠른 정렬이 평균적으로 키의 비교횟수가 약간 많음에도 불구하고 합병정렬보다 선호된다. 키 비교 퀵 : A(n)= 1.38nlgn, 합병 : nlgn... 결국 비교횟수자체가 합병정렬이 퀵정렬보다 적어서 빠르다는 말같은데???
저 상수는 아마 피봇 때문에 생기는 것이지 싶은데 크게 작용 안한다고보는게...
흠...
비교 횟수만 따지면 별로 차이 안남. 교환 횟수가 크리티컬한 부분
그런대 그 링크드 솔팅 존나 빠를것 같다.
내 생각엔 결론 자체는 합병정렬이 좀더빠르긴 한데 추가적인 공간을 필요로 한다는 제약 때문에 퀵정렬이 더 많이 쓰이는 것 같긴한데 내생각이야...
백문이 불여일견이라고 머지 솔트 하나 짜서 qsort 하고 비교해봐.
ㅇㅇ...
Qsort가 난수일 때 빠르다.
r
dd..