2017-01-27 5 views
0

우선 순위 큐의 기초에 대해 알고 있고, prority 큐에 요소를 추가 할 수 있지만 다음과 같이 특정 값 뒤에 요소를 추가 할 수 있는지 궁금합니다. - 내 배열은 2, 5, 7, 11입니다. 추가하고 싶습니다. 4이지만 5 후에, 최종 배열은 2,5,4,7,11입니다. O (로그인) 시간에 다른 방법이 있습니까?특정 값 다음에 우선 순위 대기열에 요소를 추가하는 방법은 무엇입니까?

+1

특별히 [std :: priority_queue] (http://en.cppreference.com/w/cpp/container/priority_queue) * 어댑터 *를 언급하고 있습니까? 그렇지 않다면,이 질문은 C++과 관련이 없으며보다 일반적인 알고리즘 질문입니다. – WhozCraig

+0

예, 우선 std :: priority_queue 어댑터를 참조합니다. –

+0

그러면 대답은 할 수 없다는 것입니다. 'std :: priority_queue'는 기본 힙 구조를 관리하는 데 사용되는 * comparator *만을 기반으로 요소 배치 (따라서 우선 순위 가져 오기 순서)를 사용합니다. 대기열의 특정 위치에서 임의로 요소를 밀 수 없습니다. 대기열의 밀어 넣기 멤버를 사용하여 작업을 수행하십시오. – WhozCraig

답변

0

O (로그인) 시간에 다른 방법이 있습니까?

대수적 인 복잡성으로 배열의 임의 위치에 삽입 할 수 없습니다.

배열에 값을 삽입하고 힙 속성이 로그 복잡성으로 유지되도록 요소를 이동할 수는 있지만 여기에 예상되는 최종 배열이 반드시 생성되는 것은 아닙니다.