Question

In: Computer Science

Write PSEUDO CODE! for Min_Heap_Delete(A,i) which deletes the item at position i in Min_Heap A. Assume...

Write PSEUDO CODE! for Min_Heap_Delete(A,i) which deletes the item at position i in Min_Heap A. Assume that A is a one-dimensional array. Hint:Think about “bubbling up” and “bubbling down” and the operations that do these, then give the best upper bound you can on the worst case running time of your method, in ordered notations.

Solutions

Expert Solution

JAVA CODE:

import java.util.*;
import java.io.*;

public class Main {

public static void main(String[] args) throws IOException {

Scanner sc = new Scanner(System.in);
System.out.println("Enter t:");
int t=sc.nextInt();

while(t-->0) {
System.out.println("Enter n and k:");
int n = sc.nextInt();

int k = sc.nextInt();

Min_Heap Min_Heap = new Min_Heap(n);
System.out.println("Enter n values to insert_into_Heap into heap:");
for (int i = 0; i < n; i++) {

Min_Heap.insert_into_Heap(sc.nextInt());

}

Min_Heap.Min_Heap_Delete(k);

Min_Heap.print_the_Heap(sc);

System.out.println();

}

}

}

class Min_Heap

{

private int[]Heap;

private int size;

private int maxSize;

private static final int FRONT = 1;

Min_Heap(int maxSize)

{

this.maxSize = maxSize;

size=0;

Heap = new int[this.maxSize+1];

Heap[0] = Integer.MIN_VALUE;

}

private int parent_Node(int position) {

return position / 2;

}

private int left_Child(int position)

{

return (2*position);

}

private int right_Child(int position)

{

return (2*position)+1;

}

private boolean Is_Leaf(int position)

{

if(position>=(size/2) && position<=size)

return true;

return false;

}

private void Swap(int fposition, int sposition)

{

int temp;

temp = Heap[fposition];

Heap[fposition]=Heap[sposition];

Heap[sposition]=temp;

}

private void Min_Heapify(int position)

{

int left = left_Child(position);

int right = right_Child(position);

int largest = position;

if(left<=size && Heap[left]<Heap[largest])

largest=left;

if(right<=size && Heap[right]<Heap[largest])

largest = right;

if(largest!=position)

{

Swap(position, largest);

Min_Heapify(largest);

}

}

void insert_into_Heap(int data)

{

if(size>=maxSize)

return;

Heap[++size]=data;

int i=size;

while(Heap[i]<Heap[parent_Node(i)])

{

Swap(i,parent_Node(i));

i=parent_Node(i);

}

}

private void build_Heap()

{

int j=(int)Math.floor(size/2.0);

for(int i=j;i>=1;i--){

Min_Heapify(i);

}

}

public void heap_Sort(Writer wr) throws IOException {

build_Heap();

int length=size;

for(int i=size;i>=2;i--)

{

Swap(1,i);

size--;

Min_Heapify(1);

}

size=length;

// print_the_Heap(wr);

}

public int Remove()

{

int popped = Heap[FRONT];

Heap[FRONT] = Heap[size];

size=size-1;

Min_Heapify(FRONT);

return popped;

}

public void Min_Heap_Delete(int i)

{

decrease_Key(i, Integer.MIN_VALUE);

Remove();

}

private void decrease_Key(int i, int new_val) {

Heap[i]=new_val;

while(i !=0 && Heap[parent_Node(i)]>Heap[i])

{

Swap(i,parent_Node(i));

i=parent_Node(i);

}

}
//Min_Heap_Delete
void print_the_Heap(Scanner sc) throws IOException {
System.out.println("The output after deleting the k-th index from heap will be: ");

for(int i=1;i<=size;i++)

{

//wr.write(Heap[i]+" ");

System.out.print(Heap[i]+" ");

}

}

}

OUTPUT SCREENSHOT:

Here I have given the inputs as:

t=1

n =5 and k=4

and the values inserted were

1 2 3 4 5

So since k is 4 will be deleted from the heap as you can see the output.

Hope you like the code and don't forget to give UPVOTE as it means a lot..THANKS:)


Related Solutions

Write pseudo code for Min_Heap_Delete(A,i) which deletes the item at position i in Min_Heap A. Assume...
Write pseudo code for Min_Heap_Delete(A,i) which deletes the item at position i in Min_Heap A. Assume that A is a one-dimensional array. Hint:Think about “bubbling up” and “bubbling down” and the operations that do these, then give the best upper bound you can on the worst case running time of your method, in ordered notations.
Synchronize producer and consumer threads that use 10-item buffer for communication. Write pseudo code for both...
Synchronize producer and consumer threads that use 10-item buffer for communication. Write pseudo code for both threads. Assume that you can use void Buffer::store(Item item) and Item Buffer::get() methods, but you need to explicitly ensure that you never store more than 10 items in the buffer (to prevent overflow).
A customer in a grocery store is purchasing three items. Write the pseudo code that will:...
A customer in a grocery store is purchasing three items. Write the pseudo code that will: • Ask the user to enter the name of the first item purchased. Then ask the user to enter the cost of the first item purchased. Make your program user friendly. If the user says the first item purchased is milk, then ask: “What is the cost of milk.” [This should work no matter what item is entered by the user. I might buy...
Write a member function that deletes all repetitions from the bag. In your implementation, assume that...
Write a member function that deletes all repetitions from the bag. In your implementation, assume that items can be compared for equality using ==. Use the following header for the function: void remove_repetitions() Here is a brief outline of an algorithm: - A node pointer p steps through the bag - For each Item, define a new pointer q equal to p - While the q is not the last Item in the bag ◼ If the next Item has...
Write a recursive algorithm in pseudo-code to compute the “power list” of a given list of...
Write a recursive algorithm in pseudo-code to compute the “power list” of a given list of integers. Assume that the List type has members: int List.length returns the length of the list. void List.push(T n) pushes an element n to the front of the list T List.pop() pops an element from the front of the list. List$$ List$$.concat(List$$ other) returns the concatenation of this list with other. Explain in plain English the reasoning behind your algorithm. Power Lists should be...
Write a Pseudo Code to send an Array of 20 elements from 8051 to the computer...
Write a Pseudo Code to send an Array of 20 elements from 8051 to the computer via serial port at maximum baud rate possible with XTAL=11.0592MHz.
Develop an algorithm for INSERTION SORT. Give the pseudo-code version. Convert your pseudo-code into a Java...
Develop an algorithm for INSERTION SORT. Give the pseudo-code version. Convert your pseudo-code into a Java program.
What will be the expected output of the following pseudo code? Write exactly what would display...
What will be the expected output of the following pseudo code? Write exactly what would display when you execute the statements. Module main() Declare Integer a = 5 Declare Integer b = 2 Declare Integer c = 3 Declare Integer result = 0 Display "The value of result is" Display result Set result = a + b * c - a Display "Changed value is: ", result End Module
(Artificial Intelligence) Write a pseudo code for the following: Regular Hill Climbing with steepest ascent
(Artificial Intelligence) Write a pseudo code for the following: Regular Hill Climbing with steepest ascent
For the following program descriptions, write step by step pseudo code that shows you understand the...
For the following program descriptions, write step by step pseudo code that shows you understand the problem and what it takes to solve it. The first one is done for you as an example. Please answer the questions in the same format as the example problem below so it is the same. Example #1 Problem A customer is purchasing five items. Design a program where you collect the amount of each item, calculate the subTotal of the items, the tax...
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT