최대 힙에서 가장 낮은 정수를 삭제하는 HEAP-DELETE-MIN (Array) 함수를 구현해야합니다. 임씨는 기능 자체에 대해 묻지 않지만 누군가가 나를 도와주기 위해 의사 코드을 제공 할 수 있습니까? 큰 도움이 될 것입니다. 배열은 함수의 끝에서 최대 힙을 유지해야합니다.최대 힙에서 최소 키를 삭제하는 방법은 무엇입니까?
1
A
답변
4
기본적으로 배열에 저장된 암시 적 힙의 모든 리프 노드를 검색해야합니다. 상위 노드가 최대 힙 속성이어야하고 힙이 인덱스 n/2 이상에서 저장된다는 것을 알기 때문에 힙의 리프 노드가됩니다 (알고리즘 복잡도에 영향을주지는 않지만). 그래서 기본적으로 당신이해야 할 것은 다음
1) Search the array for the minimum element
2) Place the last-inserted heap element in the position of the minimum element (essentially this is the delete)
3) Upheap the replaced node to restore maximum heap property and correct storage of the heap in the array
이 최소의 요소의 검색에 대한 O (N)를 취할 것입니다, 다음 O (1)에 대한 스위치, 그리고 마지막으로 O (N 로그)에 대한 격상한다. 전체적으로 이것은 선형 시간입니다. 근본적으로 당신이 할 수있는 최선의 방법입니다.
인덱스 작업에주의해야합니다. 2 * i는 노드 i의 왼쪽 자식이고 2 * i + 1은 배열 기반 힙에서 노드 i의 오른쪽 자식입니다 (배열의 0 번째 요소는 항상 비어 있고 힙의 루트는 인덱스 1에 있습니다.)
관련 문제
- 1. 힙에서 Java 객체를 삭제하는 방법은 무엇입니까?
- 2. HSTORE 키를 삭제하는 방법은 무엇입니까?
- 3. 내부 배열을 재정렬하지 않고 최소 힙에서 최대 힙으로 전환
- 4. 최대 힙에서 추출하는 시간은 얼마입니까?
- 5. 참조 된 해시에서 키를 삭제하는 방법은 무엇입니까?
- 6. 테이블에서 외래 키를 삭제하는 방법은 무엇입니까?
- 7. 키를 기반으로 배열 요소를 삭제하는 방법은 무엇입니까?
- 8. 최소 및 최대 날짜를 설정하는 방법은 무엇입니까?
- 9. 최소/최대 기능으로 @variable을 사용하는 방법은 무엇입니까?
- 10. 최소 수의 최대 문자열을 계산하는 방법은 무엇입니까?
- 11. numeric_limits 최소/최대 constexpr입니까?
- 12. 최소/최대
- 13. 최대 힙에서 세 번째로 작은 요소의 인덱스
- 14. 정수 스트림의 최대 및 최소
- 15. 최소/최대 이진 힙 생성
- 16. 이진 힙에서 RemoveMin Java
- 17. 최소 - 최대 DataPoint에 Normilization
- 18. 외래 키를 삭제하는 문제
- 19. 암호의 최소 및 최대 문자
- 20. 기하학 필드에서 최대 위도, 최소 위도, 최대 길이, 최소 길이
- 21. DataGridView의 편집 모드에서 키를 삭제하는 기본 기능을 사용하는 방법은 무엇입니까?
- 22. 행의 외래 키를 삭제할 때이를 삭제하는 방법은 무엇입니까?
- 23. Amazon Dynamodb에서 해시 키를 기반으로 레코드를 삭제하는 방법은 무엇입니까?
- 24. 외래 키를 설정하고 여러 테이블에서 데이터를 검색하거나 삭제하는 방법은 무엇입니까?
- 25. Vim에서 백 스페이스를 비활성화하고 키를 삭제하는 방법은 무엇입니까?
- 26. Immutable.js에서 다중 중첩 키를 삭제하는 가장 좋은 방법은 무엇입니까?
- 27. MySQL 테이블에서 외래 키를 동적으로 삭제하는 방법은 무엇입니까?
- 28. 새 데이터베이스에서 기존 기본 키를 병합하고 삭제하는 방법은 무엇입니까?
- 29. mysql에서 외래 키에 고유 키를 삭제하는 방법은 무엇입니까?
- 30. 테이블에서 인덱스 키를 삭제하는 방법