힙은 매우 적합하며 잘못된 방향으로 가고있는 것처럼 보입니다.
(이 X BTW, n으로 비교하는 방법?) 당신이 최고 X 요소를 원하는 말
당신이 최대 힙에 모든 퍼팅 상단 X를 점점하고 있습니다.
대신에 정확히 x 개의 요소로 구성된 최소 힙을 사용하는 것이 좋습니다.
처음 x 개의 요소를 힙에 삽입합니다.
다음 들어오는 요소는 힙에서 매우 빠르게 수행 할 수있는 시간 (O (1) 시간)과 비교됩니다. 더 작 으면 들어오는 요소를 무시하십시오.
들어오는 요소가 min보다 큰 경우 들어오는 요소로 min을 늘리고 힙에서 아래로 이동합니다. 최악의 경우 logx 시간이어야합니다.
완료되면 (nlogx 시간) O (xlogx) 시간에 정렬 된 순서로 힙에서 요소를 검색 할 수 있습니다.
데이터의 크기 (및 x가 작은 크기)에 따라이 힙 힙 솔루션을 사용하면 속도가 매우 빠릅니다.
삽입물이 초고속이기를 원하고 검색에별로 신경 쓰지 않으려면 다음을 수행 할 수도 있습니다.
요소를 벡터 순서대로 나열합니다 (상각 된 O (1) 삽입 시간이있는 배열).
x 번째로 큰 요소 (O (n) 시간이지만 상수는 클 수 있음)를 찾으려면 선택 알고리즘을 사용하십시오. 그 수가
이제 S와 각 요소를 비교 어레이를 걸어
X가 (같은 N/2 일)이 N 합리적 크기와 비교할 경우 S.
만큼 큰 것들을 선택 S.
받았다고 괜찮을 수도 있지만 x가 n에 비해 작 으면 min-heap을 사용하는 것이 좋습니다.
몇 개입니까? 그들은 어디에서나 지속되고 있습니까? 그렇다면 어떻게됩니까? – Lazarus
* 삽입 *, * 검색 * (우선 순위 항목) 및 * 제거 *가 얼마나 효율적인지 더 자세히 말하십시오. – Artelius
나는 먼저 항목을 평가하고 첫 번째 x 최고 득점 항목을 올바른 순서로 검색하려고합니다. 많은 삽입이 있기 때문에 삽입은 오히려 효율적이어야합니다. 재 입국은 덜 효율적일 수 있습니다. – ladi