무더기. - 무더기.
우리는 한 무더기를 지었다. 왜냐하면 우리는 수조로 이루어졌기 때문이다. 우리는 먼저 그것의 속성을 보완할 것이다
import java.util.Arrays;
public class TestHeap {
public int[] elem;
public int usedSize;
public TestHeap() {
this.elem = new int[20];
this.usedSize = 0;
}
우리가 지금 해야 할 첫 번째 단계는 우리의 수조를 이용하여 무더기를 건설하는 것이다
public void adjustDown(int root, int len) {
//
int parent = root;
int child = 2 * parent + 1;
while (child < len) {
if (child + 1 < len && elem[child] < elem[child + 1]) {
child = child + 1;
}
if (elem[child] > elem[parent]) {
int tmp = elem[child];
elem[child] = elem[parent];
elem[parent] = tmp;
parent = child;
child = 2 * parent + 1;
} else {
break;
}
}
}
public void createHeap(int[] array) {
for (int i = 0; i < array.length; i++) {
this.elem[i] = array[i];
this.usedSize++;
}
for (int i = (this.usedSize - 1 - 1) / 2; i >= 0; i--) {
//
adjustDown(i, this.usedSize);
}
}
지금 무더기가 이미 건설되었는데, 우리는 지금 삽입val을 진행합니다
public void adjustUp(int child) {
//
while (child > 0) {
int parent = (child - 1) / 2;
if (this.elem[child] > this.elem[parent]) {
int tmp = this.elem[child];
this.elem[child] = this.elem[parent];
this.elem[parent] = tmp;
child = parent;
parent = (child - 1) / 2;
} else {
break;
}
}
}
public boolean isFull(){
return this.usedSize==this.elem.length;
}
public void pushHeap(int val){
//
if (isFull()){
//
this.elem=Arrays.copyOf(this.elem, this.elem.length*2);
}
this.elem[usedSize]=val;
this.usedSize++;
//
adjustUp(this.usedSize-1);
}
저희가 지금 저희 최대치 팝을 나가도록 하겠습니다.
public boolean isEmpty(){
return this.usedSize==0;
}
public void popHeap(){
//
if (isEmpty()){
return;
}
int tmp=this.elem[0];
this.elem[0]=this.elem[this.usedSize-1];
this.elem[this.usedSize-1]=tmp;
this.usedSize--;
//
adjustDown(0, this.usedSize);
}
현재 최대값 가져오기 작업
public int getPop(){
//
if (isEmpty()){
return -1;
}else {
return this.elem[0];
}
}
이 조작을 완성하려면 우리는 인쇄된 함수를 써서 그들의 값을 인쇄해야 한다
public void display(){
for (int i = 0; i <this.usedSize ; i++) {
System.out.print(this.elem[i]+" ");
}
System.out.println();
}
우리main 함수 제공
public class TestDemo {
public static void main(String[] args) {
int []array={13,8,2,7,10,9,11,15,12,6};
TestHeap testHeap=new TestHeap();
testHeap.createHeap(array);
testHeap.display();
testHeap.pushHeap(14);
testHeap.display();
testHeap.popHeap();
testHeap.display();
int c=testHeap.getPop();
System.out.println(c);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.