Skip to content

priority queue #85

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
158 changes: 158 additions & 0 deletions PriorityQueueTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
import java.util.Scanner;

/** class Task **/
class Task
{
String job;
int priority;

/** Constructor **/
public Task(String job, int priority)
{
this.job = job;
this.priority = priority;
}
/** toString() **/
public String toString()
{
return "Job Name : "+ job +"\nPriority : "+ priority;
}
}

/** Class PriorityQueue **/
class PriorityQueue
{
private Task[] heap;
private int heapSize, capacity;

/** Constructor **/
public PriorityQueue(int capacity)
{
this.capacity = capacity + 1;
heap = new Task[this.capacity];
heapSize = 0;
}
/** function to clear **/
public void clear()
{
heap = new Task[capacity];
heapSize = 0;
}
/** function to check if empty **/
public boolean isEmpty()
{
return heapSize == 0;
}
/** function to check if full **/
public boolean isFull()
{
return heapSize == capacity - 1;
}
/** function to get Size **/
public int size()
{
return heapSize;
}
/** function to insert task **/
public void insert(String job, int priority)
{
Task newJob = new Task(job, priority);

heap[++heapSize] = newJob;
int pos = heapSize;
while (pos != 1 && newJob.priority > heap[pos/2].priority)
{
heap[pos] = heap[pos/2];
pos /=2;
}
heap[pos] = newJob;
}
/** function to remove task **/
public Task remove()
{
int parent, child;
Task item, temp;
if (isEmpty() )
{
System.out.println("Heap is empty");
return null;
}

item = heap[1];
temp = heap[heapSize--];

parent = 1;
child = 2;
while (child <= heapSize)
{
if (child < heapSize && heap[child].priority < heap[child + 1].priority)
child++;
if (temp.priority >= heap[child].priority)
break;

heap[parent] = heap[child];
parent = child;
child *= 2;
}
heap[parent] = temp;

return item;
}
}

/** Class PriorityQueueTest **/
public class PriorityQueueTest
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("Priority Queue Test\n");

System.out.println("Enter size of priority queue ");
PriorityQueue pq = new PriorityQueue(scan.nextInt() );

char ch;
/* Perform Priority Queue operations */
do
{
System.out.println("\nPriority Queue Operations\n");
System.out.println("1. insert");
System.out.println("2. remove");
System.out.println("3. check empty");
System.out.println("4. check full");
System.out.println("5. clear");
System.out.println("6. size");

int choice = scan.nextInt();
switch (choice)
{
case 1 :
System.out.println("Enter job name and priority");
pq.insert(scan.next(), scan.nextInt() );
break;
case 2 :
System.out.println("\nJob removed \n\n"+ pq.remove());
break;
case 3 :
System.out.println("\nEmpty Status : "+ pq.isEmpty() );
break;
case 4 :
System.out.println("\nFull Status : "+ pq.isFull() );
break;
case 5 :
System.out.println("\nPriority Queue Cleared");
pq.clear();
break;
case 6 :
System.out.println("\nSize = "+ pq.size() );
break;
default :
System.out.println("Wrong Entry \n ");
break;
}

System.out.println("\nDo you want to continue (Type y or n) \n");
ch = scan.next().charAt(0);
} while (ch == 'Y'|| ch == 'y');
}
}
103 changes: 41 additions & 62 deletions Quick_sort.java
Original file line number Diff line number Diff line change
@@ -1,63 +1,42 @@

class QuickSort
{

int partition(int arr[], int low, int high)
{
int pivot = arr[high];
int i = (low-1);
for (int j=low; j<high; j++)
{

if (arr[j] <= pivot)
{
i++;


int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}


int temp = arr[i+1];
arr[i+1] = arr[high];
arr[high] = temp;

return i+1;
}

void sort(int arr[], int low, int high)
{
if (low < high)
{
int pi = partition(arr, low, high);
sort(arr, low, pi-1);
sort(arr, pi+1, high);
}
}


static void printArray(int arr[])
{
int n = arr.length;
for (int i=0; i<n; ++i)
System.out.print(arr[i]+" ");
System.out.println();
}


public static void main(String args[])
{
int arr[] = {10, 7, 8, 9, 1, 5};
int n = arr.length;

QuickSort ob = new QuickSort();
ob.sort(arr, 0, n-1);

System.out.println("sorted array");
printArray(arr);
}
import java.util.*;
class QuickSort {
int partition(int intArray[], int low, int high) {
int pi = intArray[high];
int i = (low-1);
for (int j=low; j<high; j++) {
if (intArray[j] <= pi) {
i++;
int temp = intArray[i];
intArray[i] = intArray[j];
intArray[j] = temp;
}
}

int temp = intArray[i+1];
intArray[i+1] = intArray[high];
intArray[high] = temp;

return i+1;
}


void quick_sort(int intArray[], int low, int high) {
if (low < high) {
int pi = partition(intArray, low, high);

quick_sort(intArray, low, pi-1);
quick_sort(intArray, pi+1, high);
}
}
}

class Main{
public static void main(String args[]) {
int intArray[] = {4,-1,6,8,0,5,-3};
int n = intArray.length;
System.out.println("Original Array: " + Arrays.toString(intArray));
QuickSort obj = new QuickSort();
obj.quick_sort(intArray, 0, n-1);
System.out.println("\nSorted Array: " + Arrays.toString(intArray));
}
}

88 changes: 0 additions & 88 deletions Stack.java

This file was deleted.