My program was working fine but now is not running but is compiling fine. Please help me. I don't know why it does that at all. It was working for past one week. I have tested to edit all possible errors but I can't figure out why is doing that. My code is attached bellow.
import java.util.*;
import java.io.*;
class Mergesort{
int swap = 0;
int comp = 0;
void merge(int arr[], int low, int middle, int high)
{
int n1 = middle - low + 1;
int n2 = high - middle;
int Left[] = new int [n1];
int Right[] = new int [n2];
for (int i=0; i<n1; ++i)
Left[i] = arr[low + i];
for (int j=0; j<n2; ++j)
Right[j] = arr[middle + 1+ j];
int i = 0, j = 0;
int k = low;
while (i < n1 && j < n2)
{
comp++;
if (Left[i] <= Right[j]){
arr[k] = Left[i];
swap++;
i++;
}
else
{
swap++;
arr[k] = Right[j];
j++;
}
k++;
}
while (i < n1)
{
swap++;
arr[k] = Left[i];
i++;
k++;
}
while (j < n2)
{
swap++;
arr[k] = Right[j];
j++;
k++;
}
}
void Merge_sort(int arr[], int l, int r)
{
if (l < r)
{
int m = (l+r)/2;
Merge_sort(arr, l, m);
Merge_sort(arr , m+1, r);
merge(arr, l, m, r);
}
}
}
class Quicksort{
int swap = 0;
int comp = 0;
int partition(int[] arr, int low, int high){
int pivot = arr[high];
int i = low-1;
for(int j = low; j<high; j++){
comp++;
if(arr[j] <= pivot){
swap++;
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;
swap++;
return i+1;
}
void Quick_sort(int arr[], int low, int high)
{
if (low < high)
{
int pi = partition(arr, low, high);
Quick_sort(arr, low, pi-1);
Quick_sort(arr, pi+1, high);
}
}
}
class Heapsort{
int swap = 0;
int comp = 0;
public void Heap_sort(int arr[])
{
int n = arr.length;
for (int i = (n/2) - 1;i >= 0;i--){
heapify(arr, n, i);
}
for (int i=n-1; i>=0; i--)
{
swap++;
int temp = arr[0];
arr[0] = arr[i];
arr[i] = temp;
heapify(arr, i, 0);
}
}
void heapify(int arr[], int n, int i)
{
int largest = i;
int l = 2*i + 1;
int r = 2*i + 2;
if (l < n && arr[l] > arr[largest]){
comp++;
largest = l;
}
if (r < n && arr[r] > arr[largest]) {
comp++;
largest = r;
}
if (largest != i)
{
int swap = arr[i];
arr[i] = arr[largest];
arr[largest] = swap;
swap++;
heapify(arr, n, largest);
}
}
}
class Sort{
public int size;
public int[] randdata;
public int[] incrdata;
public int[] decrdata;
public Sort(int size){
this.size = size;
randdata = new int[size];
incrdata = new int[size];
decrdata = new int[size];
}
public void initialize(){
for(int i=0;i<size;i++){
randdata[i] = new Random().nextInt(size);
incrdata[i] = i;
decrdata[i] = size - i;
}
}
public void list(int[] data){
for(int i=0;i<size;i++){
System.out.print(" "+data[i]);
}
System.out.println();
}
public void swapdata(int[] data, int i , int j){
int temp = data[i];
data[i] = data[j];
data[j] = temp;
}
public void selectionSort(int[] data , String str){
int comp = 0;
int swap = 0;
int n = data.length;
for(int i=0;i<n-1;i++){
int min = i;
for(int j=i+1;j<n;j++){
comp++;
if(data[j] < data[min]){
min = j;
}
}
swapdata(data , i , min);
swap++;
}
// System.out.print("SELECTION SORT(n = )"+size);
System.out.println(str+" "+"Reads = "+comp+" "+"Writes = "+swap);
}
public void insertionsort(int[] data , String str){
int swap = 0;
int comp = 0;
int n = data.length;
for (int i=1; i<n; i++){
int swap_data = data[i];
int j = i-1;
while (j>=0 && data[j] > swap_data)
{
swap++;
comp = comp + 1;
data[j+1] = data[j];
j = j-1;
}
data[j+1] = swap_data;
swap++;
}
System.out.println(str+" "+"Reads = "+comp+" "+"Writes = "+swap);
}
public void mergesort(int[] data , String str){
int n = data.length;
Mergesort m = new Mergesort();
m.Merge_sort(data , 0 , n-1);
System.out.println(str+" "+"Reads = "+m.comp+" "+"Writes = "+m.swap);
}
public void quicksort(int[] data , String str){
int n = data.length;
Quicksort q = new Quicksort();
q.Quick_sort(data , 0 , n-1);
System.out.println(str+" "+"Reads = "+q.comp+" "+"Writes = "+q.swap);
}
public void heapsort(int[] data , String str){
Heapsort h = new Heapsort();
h.Heap_sort(data);
System.out.println(str+" "+"Reads = "+h.comp+" "+"Writes = "+h.swap);
}
/* public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Please enter the size of array: ");
int size = in.nextInt();
Sort s = new Sort(size);
s.initialize();
s.list(s.randdata);
s.list(s.incrdata);
s.list(s.decrdata);
System.out.println("SELECTION SORT(n = "+size+")");
s.selectionSort(s.incrdata , "Increasing Order");
s.selectionSort(s.decrdata , "Decreasing Order");
s.selectionSort(s.randdata , "Random Order");
System.out.println("INSERTION SORT(n = "+size+")");
s.insertionsort(s.incrdata , "Increasing Order");
s.insertionsort(s.decrdata , "Decreasing Order");
s.insertionsort(s.randdata , "Random Order");
System.out.println("MERGE SORT(n = "+size+")");
s.mergesort(s.incrdata , "Increasing Order");
s.mergesort(s.decrdata , "Decreasing Order");
s.mergesort(s.randdata , "Random Order");
System.out.println("QUICK SORT(n = "+size+")");
s.quicksort(s.incrdata , "Increasing Order");
s.quicksort(s.decrdata , "Decreasing Order");
s.quicksort(s.randdata , "Random Order");
System.out.println("HEAP SORT(n = "+size+")");
s.heapsort(s.incrdata , "Increasing Order");
s.heapsort(s.decrdata , "Decreasing Order");
s.heapsort(s.randdata , "Random Order");
} */
}
I think the problem coming from here
public class Main{
public static void Main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Please enter the size of array: ");
int size = in.nextInt();
Sort s = new Sort(size);
s.initialize();
s.list(s.incrdata);
s.list(s.decrdata);
s.list(s.randdata);
System.out.println();
System.out.println("SELECTION SORT(n = "+size+")");
s.selectionSort(s.incrdata , "Increasing Order");
s.selectionSort(s.decrdata , "Decreasing Order");
s.selectionSort(s.randdata , "Random Order ");
System.out.println();
System.out.println("INSERTION SORT(n = "+size+")");
s.insertionsort(s.incrdata , "Increasing Order");
s.insertionsort(s.decrdata , "Decreasing Order");
s.insertionsort(s.randdata , "Random Order ");
System.out.println();
System.out.println("MERGE SORT(n = "+size+")");
s.mergesort(s.incrdata , "Increasing Order");
s.mergesort(s.decrdata , "Decreasing Order");
s.mergesort(s.randdata , "Random Order ");
System.out.println();
System.out.println("QUICK SORT(n = "+size+")");
s.quicksort(s.incrdata , "Increasing Order");
s.quicksort(s.decrdata , "Decreasing Order");
s.quicksort(s.randdata , "Random Order ");
System.out.println();
System.out.println("HEAP SORT(n = "+size+")");
s.heapsort(s.incrdata , "Increasing Order");
s.heapsort(s.decrdata , "Decreasing Order");
s.heapsort(s.randdata , "Random Order ");
}
}
Comments
Post a Comment