안정적인 정렬 알고리즘 대신 최악의 경우 를 제공하는 좋은 리소스를 찾는 데 문제가 있습니다. 누구든지 좋은 자원을 알고 있습니까?
단지 상기시켜주는 것은 전달 된 배열을 사용하고 정렬 알고리즘은 일정한 여분의 공간 만 사용할 수 있다는 것을 의미합니다. 안정은 동일한 키를 가진 요소가 원래 배열에서와 동일한 순서로 정렬 된 배열로 나타남을 의미합니다.
예를 들어, 순진 병합 정렬은 최악의 경우 이고 안정적이지만 추가 공간을 사용합니다. 표준 퀵 정렬은 안정적으로 만들어 질 수 있지만, 최악의 경우 입니다. 힙 정렬이 있고 최악의 경우 이지만 안정적이지 않습니다. Wikipedia 에는 정렬 알고리즘에 어떤 단점이 있는지에 대한 훌륭한 차트가 있습니다. 세 가지 안정성 조건, 최악의 경우 을 모두 갖추고 있고 적절한 정렬 알고리즘이 나열되어 있지 않습니다 .O ( 없음 ) O ( N 2 ) O ( N LN N ) O ( N LN N )
Katajainen, Pasanen 및 Teuhola의 "Practical in-place mergesort" 라는 논문이 발견되었습니다.이 논문에서는 안정적인 mergesort 변형 이 최악의 경우 인 것으로 주장합니다 . 결과를 올바르게 이해 하면 배열 의 첫 번째 및 배열의 후자 에 대해 (bottom-up?) mergesort를 재귀 적으로 사용하고 두 번째 를 병합하기위한 스크래치 공간으로 사용하십시오. 나는 아직도 이것을 읽고 있으며 결과를 올바르게 해석하고 있는지에 대한 더 많은 정보가 높이 평가됩니다.1 1 1
또한 안정적인 퀵 정렬이 있는 최악의 경우 에 관심이 있습니다 . 내가 이해 한 바에 따르면, 퀵 정렬을 최악의 경우 하려면 적절한 피벗 을 선택 해야합니다 .O ( N LN N )
이것은 순전히 이론적 인 관심사이며 실질적인 적용은 없습니다. 이 세 가지 기능을 모두 갖춘 알고리즘을 알고 싶습니다.