각 요소가 시간 과 비교되도록 정렬 네트워크로 줄이지 않는 알려진 비교 정렬 알고리즘이 있습니까?
내가 아는 한, 각 요소에서 비교 로 정렬하는 유일한 방법 은 n 개의 입력에 대해 AKS 정렬 네트워크를 구성하고 정렬 네트워크 에서 입력을 실행하는 것입니다.
AKS는 구현하기 쉽지 않고 비현실적인 상수 요소가 있으므로 다른 알고리즘을 검색하려는 동기가 있습니다.
정렬 네트워크를 의미하지 않는 것으로 보이는 항목 당 비교 알고리즘이 여기 에 표시 됩니다 . (iirc, 이것은 Stony Brook의 알고리즘 세미나에서 Rob Johnson 이 처음 발표했습니다 ).
2
질문을 이해하지 못합니다 : 많은 순차적 알고리즘이 귀하의 요청에 해당하는 것 같습니다. 예를 들어 병합 정렬은 고전적인 정렬 알고리즘이며 요소 당 이상 비교 하지 않습니다 . 병렬 정렬 알고리즘 에 대해 질문하고 있습니까?
—
제레미
@Jeremy : 두 개의 목록, 병합 경우 와 ( b를 1 , . . . , B의 n은 ) , 당신은 비교 끝낼 수 1 의 각각에 대하여 B 1 , . . . , b n , 즉 한 요소 당 Ω ( n ) 비교. 그리고 이것은 단지 하나의 "병합"단계였습니다. 물론 평균비교 횟수는 반드시 작지만 문제는 최악의 복잡성에 관한 것입니다.
—
Jukka Suomela
가능하다고 생각합니다. 정렬 네트워크는 데이터가 명확하지 않으며 미리 정해진 비교 방법이 있지만 정렬 알고리즘은 데이터에 따라 다른 작업 집합 중에서 선택할 수 있습니다. 병합 정렬 을 각 요소에 대해 비교를 사용 하여 알고리즘으로 수정할 수 있으며 정렬 네트워크를 의미하지는 않습니다. reddit.com/comments/9jqsi/…
—
Chao Xu
Jukka : 고마워요. 하지만 그건 순진한 병합을 사용하여 바로 그 때입니다 : 하나는 병합 할 수 있습니다 와 ( B 1 , ... , B의 N ) 여전히 각 요소, 배치 검색을 두 배로 사용하여 N 최악의 경우 총 비교, 그러나 요소 당 최대 lg n 비교는 Chao가 암시하는 병합 정렬 버전을 생성합니다.
—
Jeremy