Skip to content

Instantly share code, notes, and snippets.

@EmekaManuel
Last active July 17, 2023 07:29
Show Gist options
  • Save EmekaManuel/c3318c92ba768f13eabf715e3f4980f2 to your computer and use it in GitHub Desktop.
Save EmekaManuel/c3318c92ba768f13eabf715e3f4980f2 to your computer and use it in GitHub Desktop.
Assignment For Cos 232
import java.util.*
// Name: Nwangwu Chibuikem John-Sinclair
// Reg Number: 2020/247006
// Department: Computer Science (200 level)
public class MinHeap {
private int[] data;
private int size;
private int maxSize;
public MinHeap(int maxSize) {
this.maxSize = maxSize;
this.size = 0;
this.data = new int[maxSize + 1];
}
private int parent(int index) {
return index / 2;
}
private int leftChild(int index) {
return index * 2;
}
private int rightChild(int index) {
return index * 2 + 1;
}
private boolean isLeaf(int index) {
return index >= size / 2 && index <= size;
}
private void swap(int index1, int index2) {
int temp = data[index1];
data[index1] = data[index2];
data[index2] = temp;
}
private void minHeapify(int index) {
if (!isLeaf(index)) {
int left = leftChild(index);
int right = rightChild(index);
int smallest = index;
if (left <= size && data[left] < data[smallest]) {
smallest = left;
}
if (right <= size && data[right] < data[smallest]) {
smallest = right;
}
if (smallest != index) {
swap(index, smallest);
minHeapify(smallest);
}
}
}
public void insert(int element) {
if (size >= maxSize) {
System.out.println("The heap is full. Cannot insert element.");
return;
}
data[++size] = element;
int current = size;
while (current > 1 && data[current] < data[parent(current)]) {
swap(current, parent(current));
current = parent(current);
}
}
public void printHeap() {
for (int i = 1; i <= size / 2; i++) {
System.out.println("Parent: " + data[i] + " Left Child: " + data[leftChild(i)]
+ " Right Child: " + data[rightChild(i)]);
}
}
public int remove() {
if (size == 0) {
System.out.println("Cannot remove element because the heap is empty.");
return -1;
}
int removedElement = data[1];
data[1] = data[size--];
minHeapify(1);
return removedElement;
}
public static void main(String[] args) {
MinHeap minHeap = new MinHeap(10);
minHeap.insert(8);
minHeap.insert(2);
minHeap.insert(16);
minHeap.insert(15);
minHeap.insert(73);
minHeap.insert(14);
minHeap.insert(9);
minHeap.insert(19);
minHeap.insert(6);
minHeap.printHeap();
System.out.println("The minimum value is: " + minHeap.remove());
}
@EmekaManuel
Copy link
Author

Complete Java assignment

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment