Welkom op de Nederland Computer Kennisnetwerk!  
 
Zoeken computer kennis
Home Hardware Netwerken Programmering Software Computerstoring Besturingssysteem
Computer Kennis >> Programmering >> Java Programming >> Content
Hoe kan ik een array-gebaseerde heap in Java implementeren?
Bij het implementeren van een array-gebaseerde heap in Java wordt een array gebruikt om de heap-structuur weer te geven. We gebruiken een min-heap als voorbeeld (het kleinste element in de root), maar de principes zijn hetzelfde voor een max-heap.

Hier is een Java-implementatie van een min-heap, inclusief methoden voor het invoegen, extraheren van het minimumelement en heapify-bewerkingen:

```java

openbare klasse MinHeap {

privé int[] heap;

privé int-grootte;

particuliere int-capaciteit;

openbare MinHeap(int-capaciteit) {

deze.capaciteit =capaciteit;

this.heap =nieuwe int[capaciteit + 1]; // Index 0 wordt niet gebruikt

deze.grootte =0;

}

openbare boolean isEmpty() {

retourgrootte ==0;

}

publieke booleaanse waarde isFull() {

retourgrootte ==capaciteit;

}

privé int ouder(int i) {

retour i / 2;

}

privé int links(int i) {

retour 2 * ik;

}

privé int rechts(int i) {

retour 2 * ik + 1;

}

private void swap(int i, int j) {

int temp =heap[i];

hoop[i] =hoop[j];

hoop[j] =temperatuur;

}

openbare ongeldige invoeging (int-sleutel) {

als (isVol()) {

throw new IllegalStateException("Heap is vol");

}

maat++;

heap[grootte] =sleutel;

int i =grootte;

while (i> 1 &&heap[parent(i)]> heap[i]) {// Min-heap eigenschap

swap(i, ouder(i));

ik =ouder(i);

}

}

openbare int extractMin() {

als (isLeeg()) {

throw new IllegalStateException("Heap is leeg");

}

int root =heap[1];

heap[1] =heap[grootte];

maat--;

ophopen(1);

retourwortel;

}

privé leegte heapify(int i) {

int kleinste =i;

int l =links(i);

int r =rechts(i);

if (l <=grootte &&hoop[l] kleinste =l;

}

if (r <=grootte &&heap[r] kleinste =r;

}

als (kleinste!=i) {

swap(i, kleinste);

ophopen(kleinste);

}

}

openbare leegte printHeap() {

voor (int i =1; i <=grootte; i++) {

Systeem.uit.print(heap[i] + " ");

}

Systeem.out.println();

}

public static void main(String[] args) {

MinHeap minHeap =nieuwe MinHeap(10);

minHeap.insert(3);

minHeap.insert(2);

minHeap.insert(15);

minHeap.insert(5);

minHeap.insert(4);

minHeap.insert(45);

System.out.println("MinHeap-array:");

minHeap.printHeap();

System.out.println("Min uitpakken:" + minHeap.extractMin());

System.out.println("Na het uitpakken van min:");

minHeap.printHeap();

}

}

```

Deze code omvat:

* Constructeur: Initialiseert de heap-array met een bepaalde capaciteit. Merk op dat index 0 niet wordt gebruikt.

* `isEmpty()` en `isFull()`: Controleer de staat van de heap.

* `parent()`, `left()`, `right()`: Helperfuncties om de indices van bovenliggende en onderliggende knooppunten op te halen.

* `swap()`: Verwisselt twee elementen in de array.

* `insert()`: Voegt een nieuw element in de heap in, waarbij de eigenschap min-heap behouden blijft.

* `extractMin()`: Verwijdert en retourneert het minimumelement (root), waarbij de eigenschap min-heap behouden blijft met behulp van `heapify()`.

* `heapify()`: Herstelt de eigenschap min-heap nadat een element is verwijderd of ingevoegd. Het vergelijkt recursief een element met zijn kinderen en wisselt indien nodig.

* `printHeap()`: Een helperfunctie voor demonstratie.

Vergeet niet om met mogelijke uitzonderingen om te gaan, zoals proberen uit een lege heap te extraheren of in een volle heap in te voegen. In dit voorbeeld worden gehele waarden gebruikt; u kunt het eenvoudig aanpassen aan andere gegevenstypen door een generieke typeparameter te gebruiken. Voor grotere stapels kunt u overwegen een meer geavanceerde strategie voor het wijzigen van de grootte te gebruiken om de beperking van de vaste capaciteit te vermijden.

Previous: Next:
  Java Programming
·Hoe te WSDL converteren naar J…
·Hoe kan ik een Java SSH client…
·Hoe je Java Inheritance Overri…
·Waar worden Java -applets gebr…
·Hoe een matrix maken en vullen…
·Hoe maak je een nieuwe regel i…
·Hoe je het aantal lijnen op ee…
·Tutorial op Enterprise Java Be…
·Hoe maak je een JSP-bestand af…
  Related Articles
Waarom gebruiken we functies bij het pro…
Welke rol speelt een tolk bij het progra…
Wat is de rol van een compiler bij compu…
Wat is het doel van een voorwaardelijke …
Wat is de hiërarchie van programmeertal…
Wat is de analoge definitie in de inform…
Wat is redex en hoe verhoudt dit zich to…
Wat is assembleertaal en hoe wordt het g…
Wat is assemblagecode en hoe wordt deze …
  Programmering Articles
·Hoe Access gebruiken en Gegevens invoere…
·Hoe te stoppen Repaint in Java Met ingeb…
·Hoe kan ik Flash -bestanden bewerken Met…
·Hoe om te sparen als PHP in Kompozer 
·Hoe kan ik meerdere waarden uit een Acce…
·Hoe je C programma's te compileren Onlin…
·Hoe te Events in VBA Monitor 
·Hoe te Unreal Engine 3 gebruiken 
·PHP-code om verbinding met MySQL 
Copyright © Computer Kennis https://www.nldit.com