최소 힙을 작성하려고하지만 올바른 결과를 얻지 못했습니다. 나는 무엇이 잘못 될지 모른다. static void Heapify(int nIndex)
{
int nLeftIndex = GetLeft(nIndex); //2*nIndex
int nRightIndex = GetRight(nIndex);//2*nIndex+1
int nS
나는 (분)이 도움이 필요 좌파 힙 쇼 아래로 : 나는 좌파 힙 21. 나의 이해를 삽입하는 결과를 보여하도록 요청하고 1
/ \
8 6
/ \ /\
10 12 14 16
/\ /
18 20 22
그리고 삽입은 단일 노드의 병합 일뿐입니다.이 경우 21은 16의 NULL 하
프롤로그에서 값을 리턴하는 술어를 얻으려면 어떻게해야합니까? 트리의 노드를 찾고 최소 힙이 있는지 확인해야합니다. 내가 그것을 이런 식 같은데요 - 지금까지 getnode(tree(_, node, _), node).
내 코드는 다음과 minheap(tree(L, Node, empty)) :-
getnode(L, Val),
Node =<
다음 예제를 고려하십시오. min 힙에 난수를 더하는 동시에 같은 숚 서로 같은 숫자를 최대 힙에 추가합니다. 따라서 결국 2 개의 힙은 최소 힙과 최대 힙 인 차이가있는 동일한 숫자를 갖게됩니다. 지금 여기에 질문 : 내가 최대 힙에서 최대 요소를 제거하려는 경우는 항상 최소 힙의 맨 아래에 최대 힙으로부터 최대 요소? 만약 그렇지 않다면, 또 다른 질문
제거 min 함수가 호출 된 후 Java에서 배열 기반 최소 힙을 "heapify"하는 방법 (이 작업은 인덱스 1의 요소를 가져 와서 제거한 다음 배열의 마지막 항목으로 바꿉니다). 제거 작업이 완료된 후 배열을 다시 최소 힙에 넣는 방법에 대해 혼란 스럽습니다. 인덱스 0은 항상 힙 최소 배열에서 비어 있습니다. 부모 색인은 i/2이고, 오른쪽 자식은
최소 힙을 사용하여 우선 순위 큐를 구현하려고하는데 개체가 잘못된 순서로 큐에서 나옵니다. 내 직관은 문제가 대기열에서 위 또는 아래로 이동하는 내 방법과 관련되어 있음을 알지만 문제가 어디에 있는지 알 수 없습니다. 누군가 내 알고리즘을보고 즉시 잘못되는 것이 있는지 확인할 수 있습니까? 미리 감사드립니다. private void walkDown(int
위키 피 디아에 따르면, 이것은 최소 힙 : https://en.wikipedia.org/wiki/Min-max_heap입니다. O (n)에서 min-max 힙을 만드는 방법이 있는지 궁금합니다. 나는 당신이 min heap과 max heap 모두를 가지고 이것을 할 수 있다는 것을 알고 있지만, 나는 이것이 어떤 접근법이 될지 모르겠다. 요소를 삽입하는
java의 표준 콜렉션에서 어떤 클래스를 최소 힙 또는 최대 힙의 상위 클래스로 만들 수 있는지 알고 싶습니다. 전략에 따라 힙을 min 또는 max로 변환 할 수있는 클래스 Heap을 개발하고 표준 컬렉션 메서드 이름 용도로 사용하기 위해 add, toString, toArray와 같은 메서드를 사용했습니다. 힙에 대한 부모 클래스를 만들어야합니다. 확장
지금 전체 그래프에서 Dijkstra의 알고리즘을 수행하고 원점 노드로부터 총 거리로 노드의 최소 힙을 형성합니다. 그런 다음 힙에서 상위 n 개 요소를 제거합니다. 이것은 심각하게 비효율적이라고 생각합니다. 가장 가까운 10 개의 노드를 찾고, 그래프에 100,000 개가 넘는 노드가 있다고 가정합니다. 전체 그래프에서 Dijkstra를 수행하는 것은 시
최소 힙을 사용하여 Dijkstra에 대한 구현이 있고 최대 힙으로 min 힙을 변경하여 최대 경로를 찾으려고했으나 출력이 잘못되었습니다. 그래서이 구현을 최대 힙으로 변경할 수 있도록 도와 주시겠습니까? 최소 힙 대신 최대 힙을 사용 다 익스트라의 알고리즘을 구현 많은 감사 public class DikjstraAlgorithm {
public stat