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 arrayheap in Java implementeren voor efficiënte gegevensopslag en -herstel?
Bij het implementeren van een array-gebaseerde heap (min-heap in dit voorbeeld) in Java wordt één array gebruikt om de heap-structuur weer te geven. Hier ziet u hoe u het kunt doen, inclusief methoden voor het invoegen, verwijderen (extractie van het minimumelement) en peek (het minimumelement verkrijgen zonder het te verwijderen):

```java

openbare klasse ArrayHeap {

privé int[] heap;

privé int-grootte;

particuliere int-capaciteit;

public ArrayHeap(int-capaciteit) {

deze.capaciteit =capaciteit;

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

deze.grootte =0;

}

// Helperfunctie om de bovenliggende index op te halen

privé int ouder(int i) {

retour i / 2;

}

// Helperfunctie om de linkerkindindex te verkrijgen

privé int links(int i) {

retour 2 * ik;

}

// Helperfunctie om de juiste onderliggende index te krijgen

privé int rechts(int i) {

retour 2 * ik + 1;

}

// Helperfunctie om op te stapelen na het inbrengen

privé leegte heapifyUp(int i) {

terwijl (i> 1 &&heap[ouder(i)]> heap[i]) {

swap(i, ouder(i));

ik =ouder(i);

}

}

// Helperfunctie om na verwijdering op te stapelen

privé leegte heapifyDown(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);

heapifyDown(kleinste);

}

}

// Helperfunctie om twee elementen te verwisselen

private void swap(int i, int j) {

int temp =heap[i];

hoop[i] =hoop[j];

hoop[j] =temperatuur;

}

// Voeg een nieuw element in de heap in

openbare ongeldige invoeging (int-sleutel) {

if (grootte ==capaciteit) {

throw new IllegalStateException("Heap is vol");

}

maat++;

heap[grootte] =sleutel;

heapifyUp(grootte);

}

// Extraheer (en verwijder) het minimumelement

openbare int extractMin() {

als (grootte ==0) {

throw new IllegalStateException("Heap is leeg");

}

int min =hoop[1];

heap[1] =heap[grootte];

maat--;

heapifyDown(1);

retour min;

}

// Haal het minimumelement op zonder het te verwijderen

public int peekMin() {

als (grootte ==0) {

throw new IllegalStateException("Heap is leeg");

}

retourheap[1];

}

//Controleer of de heap leeg is

openbare booleaanse waarde isEmpty(){

retourgrootte ==0;

}

public static void main(String[] args) {

ArrayHeap-heap =nieuwe ArrayHeap(10);

heap.insert(10);

heap.insert(5);

heap.insert(15);

heap.insert(3);

heap.insert(8);

System.out.println("Minimaal element:" + heap.peekMin()); // Uitgang:3

System.out.println("Geëxtraheerd minimumelement:" + heap.extractMin()); // Uitgang:3

System.out.println("Nieuw minimumelement:" + heap.peekMin()); // Uitgang:5

}

}

```

Deze implementatie biedt basisheapbewerkingen. Onthoud dat dit een *min-heap* is; om er een *max-heap* van te maken, zou je de vergelijkingslogica in `heapifyUp` en `heapifyDown` moeten omkeren. Voor grotere hoeveelheden kunt u overwegen een geavanceerdere gegevensstructuur of bibliotheek te gebruiken als de prestaties van cruciaal belang worden. U kunt dit ook uitbreiden om generieke gegevens voor veelzijdigere gegevenstypen te verwerken. Vergeet niet om potentiële uitzonderingen, zoals 'IllegalStateException', voor lege of volledige heaps af te handelen.

Previous: Next:
  Java Programming
·Hoe maak je een Servlet API to…
·Hoe maak je input een string i…
·Hoe maak je een Game App voor …
·Hoe te Turn - Based Games Creë…
·Hoe te voegen en verwijderen L…
·Hoe te JVM Heap Size Verander 
·Hoe maak ik een uitzondering i…
·Hoe maak je een Delay Effect N…
·Verschillen tussen Interfaces …
  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 stel je de computer in op Engels? 
·Hoe kan ik een aangepaste knop in Maak P…
·Hoe een Informix SQL Delete Command 
·Hoe maak je Voeg een Banner Het gebruik …
·Stappen in het Data Processing Cycle 
·Hoe maak je een Basic Date Picker gebrui…
·Android App Development 
·Om te lezen hoe een enkele lijn met komm…
·Hoe krijg ik Perl Counter Script om IP- …
Copyright © Computer Kennis https://www.nldit.com