아래 그림과 같이 :
import java.util.arrays; // 작은 상단 힙의 코드는 공개 클래스 힙을 구현합니다. {// 하향 조정, 상단의 최대 값은 줄어들고 주로 힙을 삭제하고 빌드하는 데 사용됩니다. I는 조정할 노드 인덱스를 나타내며, n은 힙의 가장 요소 인덱스를 나타냅니다 .// 삭제할 때 0입니다. 힙을 구축 할 때 마지막 노드 공개 정적 void fixdown (int [] data, int i, int n) {int num = data [i]; int son [i * 2 + 1; <data [son]) son ++; if (num <data [son]) break; data [i] = data [son]; i = son; son = son = son = i * 2+1;} 데이터 [i] = num;} // 위쪽으로 조정하고, 작은 값이 위로 올라가고, 위로 조정하고, 상단 색인을 설정할 필요가 없으며, int [int n int n) (n -1)/ 2; // 데이터 [아버지]> num은 루프에 들어가는 기본 조건입니다. 아버지가 0으로 감소하면 n이 0과 같을 때는 감소하지 않습니다. 아버지 = 0; 죽은 루프에 들어가기 때문에 n == 0 일 때 (데이터 [아버지]> num && n! = 0) {data [n = 아버지]; n = 아버지; 아버지 = (n -1)/ 2;} data [n] = num;} // heap public static void (int, int n)의 인덱스를 나타냅니다. 데이터 [n]; data [n] = -1; fixdown (data, 0, n -1);} // 증가 할 수있는 숫자를 나타냅니다. n은 추가 할 숫자를 나타냅니다. n은 추가 할 위치의 인덱스를 나타냅니다. 힙의 공개 정적 void 인서트 (int [] data, int n, int n) {num; num; num; n)의 마지막 요소입니다. heap public static void creat (int [] data, int n) {for (int i = (n -1)/ 2; i> = 0; i-) fixdown (data, i, n);} public static void main (string [] args) {int [] data = {15, 13, 1, 5, 20, 8, 9, 11}; 1); system.out.println (arrays.toString (data)); // 테스트 삭제 (data, data.length -1); 삭제 (data, data, data.length.println (arrays.tostring (data)); // 테스트 인서 (data, 3, data.length.length.out.out.out.frintln);Java 구현 힙 작동 (Building Heap, Inserting, Deleting)에 관한 위의 기사는 내가 공유하는 모든 컨텐츠입니다. 나는 당신이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.