정수 값 집합이 있으며 추력을 사용하여 정렬하려고합니다. 이 정렬에서 일부 상위 비트/하위 비트 만 사용하는 것이 가능합니까? 가능하다면 사용자 정의 비교기를 사용하고 싶지 않습니다. 사용 된 알고리즘을 radix-sort에서 merge-sort로 변경하고 경과 시간을 상당히 늘리기 때문입니다.추력 라이브러리가있는 키의 정밀도가 낮은 정렬 방법
모든 숫자가 같은 값을 가질 때 정렬하는 동안 건너 뛴다 고 생각합니다. 가능한 가장 낮은 비트 수를 사용하는 것이 가능하고 충분할 것이라고 생각합니다. (예 : 0 상위 3 개 비트를 8 비트의 문자를 사용하여 설정 5 비트 용)
예 : 하이 또는 로우 단지 4 비트를 사용
sort<4, 0>(myvector.begin(), myvector.end())
sort<4, 1>(myvector.begin(), myvector.end())
정렬 .. 유사한
뭔가 http://www.moderngpu.com/sort/mgpusort.html
명시 적 방법이 없으며 일반적으로 필요하지 않습니다. 'thrust :: sort'의 기수 정렬은 데이터를 검사하고 제로 비트 안에 불필요한 패스를 생략합니다. –
예, 벡터를 정렬 할 때 포함 된 값에 따라 경과 시간 값이 달라집니다. 포함 된 값이 같더라도 컨테이너의 유형이 int, short 또는 byte 일 때 다른 경과 시간 값을 얻습니다. 숫자가 서명 될 때 조금 증가합니다. 하지만 당신이 말했듯이, 그것은 0으로 비트를 생략합니다. – phoad
@ JaredHoberock의 의견은 적절한 답이라고 생각합니다. 답변을 귀하의 의견을 변환하는 경우 나는 그것을 허용 대답으로 지정할 수 있습니다. – phoad